Non vuoi usare $set
qui, ma $pull
(vedi documenti
), e mentre potresti usa $elemMatch
per specificare ulteriormente la tua richiesta, non è necessario.
Quanto segue estrarrà tutte le notifiche di aggiunta di amici con {"sender": "safari"}
dal sottoarray di documenti corrispondenti a {"username": "amitverma"}
db.yourcollection.update({"username": "amitverma"}, {
$pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})
Per quanto riguarda il tuo commento, se volessi aggiornare un particolare elemento lo faresti usa $set
in combinazione con $elemMatch
e l'operatore posizionale $
. Per il tuo esempio, qualcosa come:
db.yourcollection.update({
"username": "amitverma",
"notifications.notifications_add_friend": {
$elemMatch: {"sender": "safari"}
}
}, {
$set: {
"notifications.notifications_add_friend.$.isUnread": false
}
})