sql >> Database teknologi >  >> NoSQL >> MongoDB

fjernelse af objekt fra indlejret array af objekter mongodb

Du kan gøre dette ved at angive noget, der matcher "dokumentet" og derefter den nødvendige "shifts"-arrayindgang som forespørgselsudtrykket for en .update() . Anvend derefter positionelle $ operatør for det matchede array-indeks med $pull :

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

Det er okay i dette tilfælde, da du kun forsøger at "matche" på det "ydre" array i den indlejrede struktur og $pull har sine egne forespørgselsargumenter til at identificere den matrixindgang, der skal fjernes.

Du skal dog være forsigtig med at bruge "indlejrede arrays". Som mens en $pull operation som denne fungerer, opdateringer til det "indre" array er ikke rigtigt mulige, da positionelle $ operatør vil kun matche det "første" element, der opfylder betingelsen. Så dit eksempel på "Mary Mack" i flere skift ville kun nogensinde matche i den første "skift"-array-indgang fundet.



  1. 7 måder at tælle dokumenter i MongoDB

  2. Spring RedisTemplate :Serialiser flere modelklasser til JSON. Skal du bruge flere RedisTemplates?

  3. Redis og Memcache eller bare Redis?

  4. Får en fejl, Fejl:kunne ikke oprette forbindelse til server 127.0.0.1 shell/mongo.js &når du forsøger at køre mongodb på mac osx lion