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
}
})