MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Operazione di aggiornamento di Mongodb all'interno del sottoarray

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