Nie chcesz używać $set
tutaj, ale $pull
(zobacz dokumentację
) i dopóki możesz użyj $elemMatch
aby dokładniej sprecyzować zapytanie, nie musisz tego robić.
Poniższe polecenie ściągnęłoby wszystkie powiadomienia o dodaniu znajomych za pomocą {"sender": "safari"}
z podtablicy dokumentów pasujących do {"username": "amitverma"}
db.yourcollection.update({"username": "amitverma"}, {
$pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})
Jeśli chodzi o Twój komentarz, jeśli chcesz zaktualizować konkretny element, chciałbyś użyj $set
w połączeniu z $elemMatch
oraz operator pozycyjny $
. Na przykład coś takiego:
db.yourcollection.update({
"username": "amitverma",
"notifications.notifications_add_friend": {
$elemMatch: {"sender": "safari"}
}
}, {
$set: {
"notifications.notifications_add_friend.$.isUnread": false
}
})