MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Замяна на вграден документ в масив в MongoDB

Използвате модела "масив от обекти". Можете да използвате позиционния оператор, той трябва да изглежда така:

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

Според моя опит моделът "масив от обекти" не е оптимален, ако обектите имат естествен ID. Във вашия случай това може да се моделира по следния начин:

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

В този случай можете да използвате нотацията с точки, за да актуализирате лесно желания елемент.

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да добавя уникален идентификатор от две колони към mongodb в приложение за метеор?

  2. Разгръщане и конфигуриране на MongoDB Shards с Ansible

  3. Най-добра практика за поддържане на mgo сесия

  4. Ръководство за заявки в Spring Data MongoDB

  5. Кога трябва да използвам NoSQL база данни вместо релационна база данни? Добре ли е да използвате и двете на един и същи сайт?