sql >> Database >  >> NoSQL >> MongoDB

Ingesloten document in array vervangen in MongoDB

U gebruikt het patroon "array of objects". U kunt de positionele operator gebruiken, deze zou er ongeveer zo uit moeten zien:

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

In mijn ervaring is het patroon "array of objects" niet optimaal als de objecten een natuurlijke ID hebben. In uw geval zou dit als volgt kunnen worden gemodelleerd:

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

In dit geval kunt u de puntnotatie gebruiken om het gewenste item gemakkelijk bij te werken.

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



  1. Kan niet authenticeren in mongo, auth mislukt

  2. Python Redis-interactie

  3. MongoDB geaggregeerde query met behulp van PHP-stuurprogramma

  4. MongoDB Index-builds - Voorkomen dat gebruikers nieuwe builds activeren