MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Operação de atualização do Mongodb dentro do sub array


Você não quer usar $set aqui, mas $pull (consulte a documentação ), e enquanto você poderia use $elemMatch para especificar melhor sua consulta, você não precisa.

O seguinte puxaria todas as notificações de adição de amigos com {"sender": "safari"} da submatriz de documentos correspondentes a {"username": "amitverma"}
db.yourcollection.update({"username": "amitverma"}, { 
  $pull: {"notifications.notifications_add_friend": {"sender": "safari"}}
})

Quanto ao seu comentário, se você quiser atualizar um elemento específico, faria use $set em combinação com $elemMatch e o operador posicional $ . Para o seu exemplo, algo como:
db.yourcollection.update({
  "username": "amitverma", 
  "notifications.notifications_add_friend": {
    $elemMatch: {"sender": "safari"}
  }
}, {
  $set: {
    "notifications.notifications_add_friend.$.isUnread": false
  }
})