MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Opération de mise à jour de Mongodb dans le sous-tableau

Vous ne voulez pas utiliser $set ici, mais $pull (voir docs ), et tant que vous pourriez utilisez $elemMatch pour préciser davantage votre requête, vous n'avez pas besoin de le faire.

Ce qui suit extraira toutes les notifications d'ajout d'amis avec {"sender": "safari"} du sous-tableau de documents correspondant à {"username": "amitverma"}

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

Quant à votre commentaire, si vous vouliez mettre à jour un élément particulier, vous le feriez utiliser $set en combinaison avec $elemMatch et l'opérateur positionnel $ . Pour votre exemple, quelque chose comme :

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