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

menghapus objek dari array objek bersarang mongodb

Anda dapat melakukannya dengan menentukan sesuatu yang cocok dengan "dokumen" dan kemudian entri larik "shifts" yang diperlukan sebagai ekspresi kueri untuk .update() . Kemudian terapkan posisi $ operator untuk indeks array yang cocok dengan $pull :

db.collection.update(
 { "_id": ObjectId("59180305c19dbaa4ecd9ee59"), "shifts.timeslot": "8:00 - NOON" },
 { "$pull": { "shifts.$.volunteers": { "fullname": "Mary Mack" } } }
)

Tidak apa-apa dalam hal ini karena Anda hanya mencoba untuk "mencocokkan" pada larik "luar" dalam struktur bersarang dan $pull memiliki argumen kuerinya sendiri untuk mengidentifikasi entri array yang akan dihapus.

Anda benar-benar harus berhati-hati menggunakan "array bersarang". Sementara $pull operasi seperti ini berfungsi, pembaruan ke larik "dalam" sebenarnya tidak mungkin karena posisi $ operator hanya akan cocok dengan elemen "pertama" yang memenuhi ketentuan. Jadi contoh "Mary Mack" Anda dalam beberapa shift hanya akan cocok dengan entri larik "shifts" pertama yang ditemukan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cara memperbarui banyak dokumen dengan nilai berbeda

  2. Bagaimana cara mengembalikan kemunculan pertama ID dengan Mongoose?

  3. 'Field membutuhkan jenis kacang yang tidak dapat ditemukan.' error spring restful API menggunakan mongodb

  4. MongoDB:Memperbarui rata-rata dalam dokumen dengan 2 array bersarang

  5. $push dan $set dalam pembaruan MongoDB yang sama