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

множество оператори за актуализиране на mongo в едно изявление?

Множество актуализации могат да бъдат извършени в един и същ документ, стига тези актуализации да не са в конфликт (оттук и грешката „има конфликтни модификации в актуализацията“).

Защото "$push" :{"bugs" :[{"name":"bug1", "count":1}]} и "$inc" :{"bugs.0.count" :1} се опитват да променят същата част от документа (а именно масива "бъгове"), те са в конфликт.

Множество актуализации могат да бъдат комбинирани, ако всяка засяга различна част от документа:

например:

> db.test.drop()
true
> db.test.save({ "_id" : 1, "name" : "albert", "bugs" : [ ] })
> db.test.update({"name":"albert"}, {"$pushAll" : {"bugs" : [{"name":"bug1", "count":1}]}, "$inc" : {"increment" : 1}, $set:{"note":"Here is another field."}})
> db.test.find()
{ "_id" : 1, "bugs" : [ { "name" : "bug1", "count" : 1 } ], "increment" : 1, "name" : "albert", "note" : "Here is another field." }
> 

Актуализацията съдържаше три различни операции ($pushAll, $inc и $set), но успя да завърши успешно, тъй като всяка операция засегна различна част от документа.

Разбирам, че това не е точно това, което се надявахте да направите, но се надявам, че ще ви даде малко по-добро разбиране за това как работят актуализациите и може би ще даде някои идеи как вашите актуализации и/или документи могат да бъдат преструктурирани, за да изпълняват функционалността, която вашата приложението изисква. Късмет.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да спрете mongo DB с една команда

  2. Мангуста и уникално поле

  3. свързване към локален mongodb от докер контейнер

  4. Защо производителността на Mongodb е по-добра на Linux, отколкото на Windows?

  5. Контролен списък за сигурност за производствени внедрявания на MongoDB