Vous ne voulez pas utiliser $set
ici, mais $pull
(voir docs
), et tant que vous pourriez utilisez $elemMatch
pour préciser davantage votre requête, vous n'avez pas besoin de le faire.
Ce qui suit extraira toutes les notifications d'ajout d'amis avec {"sender": "safari"}
du sous-tableau de documents correspondant à {"username": "amitverma"}
db.yourcollection.update({"username": "amitverma"}, {
$pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})
Quant à votre commentaire, si vous vouliez mettre à jour un élément particulier, vous le feriez utiliser $set
en combinaison avec $elemMatch
et l'opérateur positionnel $
. Pour votre exemple, quelque chose comme :
db.yourcollection.update({
"username": "amitverma",
"notifications.notifications_add_friend": {
$elemMatch: {"sender": "safari"}
}
}, {
$set: {
"notifications.notifications_add_friend.$.isUnread": false
}
})