Du ønsker ikke at bruge $set
her, men $pull
(se dokumenter
), og mens du kunne brug $elemMatch
for yderligere at specificere din forespørgsel, behøver du ikke.
Følgende vil trække alle tilføjelsesvenner med {"sender": "safari"}
fra underarrayet af dokumenter, der matcher {"username": "amitverma"}
db.yourcollection.update({"username": "amitverma"}, {
$pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})
Med hensyn til din kommentar, hvis du ville opdatere et bestemt element, ville du det brug $set
i kombination med $elemMatch
og positionsoperatøren $
. For dit eksempel, noget som:
db.yourcollection.update({
"username": "amitverma",
"notifications.notifications_add_friend": {
$elemMatch: {"sender": "safari"}
}
}, {
$set: {
"notifications.notifications_add_friend.$.isUnread": false
}
})