MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Remplacement du document intégré dans le tableau dans MongoDB

Vous utilisez le modèle "tableau d'objets". Vous pouvez utiliser l'opérateur positionnel, il devrait ressembler à ceci :

coll.update( {'_id':'2', 'users._id':'2'}, {$set:{'users.$':{ "_id":2,"name":"name6",... }}}, false, true)

D'après mon expérience, le modèle "tableau d'objets" n'est pas optimal si les objets ont un ID naturel. Dans votre cas, cela pourrait être modélisé comme suit :

{
  "_id" : "2",
  "users" : 
    { "1" : { "name" : "name1", "xyz..." : "xyz1..." }, 
      "2" : { "name" : "name2", "xyz..." : "xyz2..." }
    }
  "name" : "main name"
}

Dans ce cas, vous pouvez utiliser la notation par points pour mettre à jour facilement l'élément souhaité.

var newValue = {  "name" : "name6", "xyz..." : "xyz5...", "morefields..." : "fields..." };
coll.update({_id: 2}, { $set: { "users.2" : newValue } });