MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

премахване на обект от вложен масив от обекти mongodb

Можете да направите това, като посочите нещо, което да съответства на „документа“ и след това необходимия запис в масива „измества“ като израз на заявката за .update() . След това приложете позиционния $ оператор за съответстващия индекс на масив с $pull :

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

Това е добре в този случай, тъй като вие се опитвате само да „съпоставите“ „външния“ масив във вложената структура и $pull има собствени аргументи на заявката за идентифициране на записа в масива за премахване.

Наистина трябва да внимавате с използването на "вложени масиви". Докато $pull операция като тази работи, актуализациите на "вътрешния" масив не са наистина възможни, тъй като позиционен $ оператор ще съответства само на "първия" елемент, който отговаря на условието. Така че вашият пример за "Мери Мак" в няколко смени ще съвпадне само в първия намерен запис в масива "смени".



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Не може да се стартира набор от реплики на MongoDB:различни грешки

  2. Mongo Query за извличане на документи на базата на същата стойност на полето и тези, които не са с изтекъл срок

  3. Грешка при актуализиране на документа Mongoose

  4. MongoDB MapReduce заключва ли базата данни

  5. Инсталирайте MongoDB на Windows