sql >> Databáze >  >> NoSQL >> MongoDB

Nahrazení vloženého dokumentu v poli v MongoDB

Používáte vzor „pole objektů“. Můžete použít poziční operátor, měl by vypadat nějak takto:

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

Podle mých zkušeností není vzor „pole objektů“ optimální, pokud mají objekty přirozené ID. Ve vašem případě by to mohlo být modelováno následovně:

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

V tomto případě můžete použít tečkovou notaci ke snadné aktualizaci požadované položky.

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



  1. Analyzujte řetězec data ISO8601 k datu s časovým pásmem UTC

  2. Dotazování prvků pole pomocí Mongo

  3. Hibernujte s MongoDB

  4. Laravel ID všech relací s ovladačem Redis