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.