MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb-Aktualisierungsvorgang innerhalb des Sub-Arrays

Sie möchten $set nicht verwenden hier, aber $pull (siehe Dokumentation ), und solange Sie könnten Verwenden Sie $elemMatch Sie müssen Ihre Anfrage nicht weiter spezifizieren.

Das Folgende würde alle Benachrichtigungen zum Hinzufügen von Freunden mit {"sender": "safari"} abrufen aus dem Unterarray von Dokumenten, die mit {"username": "amitverma"} übereinstimmen

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

Was Ihren Kommentar betrifft, wenn Sie ein bestimmtes Element aktualisieren wollten, würden Sie das tun Verwenden Sie $set in Kombination mit $elemMatch und der Positionsoperator $ . Für Ihr Beispiel etwas wie:

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