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

Mongodb memperbarui elemen spesifik dari subarray

Masalah dalam kode Anda adalah dot-notation karena Saat Anda menentukan notasi titik, Anda menganggap bahwa kriteria filter yang ditentukan harus cocok dengan elemen larik tunggal yang memenuhi semua kriteria. Tapi tidak. Notasi titik pada array dapat mengambil elemen array apa pun jika ada kriteria tunggal yang cocok. Itulah mengapa Anda mendapatkan pembaruan yang tidak terduga.

Anda harus menggunakan $elemMatch untuk mencocokkan semua filter dalam array elemen.

db.coll.update({
'_id' : 28,
n: { 
   $elemMatch:{
       a : new ObjectId('4ef85a3e46b3b84408000000'),
       c : 28 }
   }
},
{
  $push : {
     'n.$.p' : ObjectId("4b97e62bf1d8c7152c9ccb74")
  },
  $set : {
     'n.$.t' : ISODate("2013-05-13T14:22:46.777Z")
  }
})

dan hasilnya adalah

    {
        "a" : ObjectId("4ef85a3e46b3b84408000000"),
        "c" : 28,
        "p" : [
            ObjectId("4f00631046b3b85002000000"),
            ObjectId("4b97e62bf1d8c7152c9ccb74")
        ],
        "t" : ISODate("2013-05-13T14:22:46.777Z"),
        "u" : 26
    }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara membuat array array skema objek di Mongoose.js

  2. Meteor membutuhkan sudo untuk dijalankan

  3. Bagaimana menerapkan MongoDB bersarang $elemMatch Query di C#

  4. pecahan utama di mongodb

  5. MongoDB $cmp