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

Операция за актуализиране на Mongodb вътре в подмасив

Не искате да използвате $set тук, но $pull (вижте документи ), и докато можехте използвайте $elemMatch за да уточните допълнително заявката си, не е необходимо.

Следното би изтеглило всички известия за добавяне на приятели с {"sender": "safari"} от подмасива от документи, съответстващи на {"username": "amitverma"}

db.yourcollection.update({"username": "amitverma"}, { 
  $pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})

Що се отнася до вашия коментар, ако искате да актуализирате определен елемент, ще го направите използвайте $set в комбинация с $elemMatch и позиционен оператор $ . За вашия пример, нещо като:

db.yourcollection.update({
  "username": "amitverma", 
  "notifications.notifications_add_friend": {
    $elemMatch: {"sender": "safari"}
  }
}, {
  $set: {
    "notifications.notifications_add_friend.$.isUnread": false
  }
})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Group, използваща Ruby драйвер

  2. $lookup на няколко нива без $unwind?

  3. Грешка при групово записване на Mongodb

  4. как да намеря отделно поле на модел при условие и в mongoose?

  5. Свързване на MongoDB от мобилно или базирано на браузър приложение