sql >> Base de Datos >  >> NoSQL >> MongoDB

Operación de actualización de Mongodb dentro de la matriz secundaria

No quieres usar $set aquí, pero $pull (ver documentos ), y mientras podrías usa $elemMatch para especificar más su consulta, no es necesario.

Lo siguiente extraería todas las notificaciones de agregar amigos con {"sender": "safari"} de la submatriz de documentos que coinciden con {"username": "amitverma"}

db.yourcollection.update({"username": "amitverma"}, { 
  $pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})

En cuanto a su comentario, si quisiera actualizar un elemento en particular, haría usa $set en combinación con $elemMatch y el operador posicional $ . Para tu ejemplo, algo como:

db.yourcollection.update({
  "username": "amitverma", 
  "notifications.notifications_add_friend": {
    $elemMatch: {"sender": "safari"}
  }
}, {
  $set: {
    "notifications.notifications_add_friend.$.isUnread": false
  }
})