MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Memperbarui catatan dengan luwak

Anda dapat menggunakan &elementMatch untuk menemukan musim keinginan dalam array, dan di objek setField Anda dapat menggunakan $ posisi operator yang mengidentifikasi elemen yang cocok dengan kueri.

Masalahnya adalah jika tidak menemukan musim yang cocok dengan season_number , dokumen tidak akan diperbarui. Dalam hal ini Anda dapat mengatur kueri pembaruan lain untuk menambahkan musim ini di seasons larik.

router.put('/api/shows/:id/seasons/:sid', function(req, res){

  var query = {
    "_id": req.params.id,
    "seasons": { 
      $elemMatch: { 
        "season_number": req.params.sid 
      } 
    }
  }

  var setField = {
    $addToSet: {
      "seasons.$.episodes": req.body
    }
  }

  TV.findOneAndUpdate(query, setField, {upsert:true}, function(err, results){
    if (err && err.code == 16836) { // no document was matched
      var season = {
        "season_number": req.params.sid
        "episodes": [ req.body]
      }
      TV.findOneAndUpdate({"_id": req.params.id}, {$push: {"seasons": season}} , function(err, result) {
          console.log("Inserted document in array");
          res.json(result)
      }); 
    }
    else if (err){
       console.log(err);
       res.status(500).send('Something wrong!');
    }
    else {
       console.log(setField);
       res.json(results)
    }
  })
})

Anda dapat melihat di sini beberapa operator larik mongodb.

Semoga membantu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kelompokkan berdasarkan elemen array tertentu dengan kerangka agregasi mongo

  2. Migrasi MongoDB ke DynamoDB, Bagian 2

  3. JSON .NET Custom Name Resolver untuk Sub-Properti

  4. Agregat Mongodb, grup, dan hitung instance

  5. Cara menjumlahkan nilai kunci di semua dokumen dalam koleksi MongoDB