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

více operátorů aktualizace mongo v jednom výpisu?

Na stejném dokumentu lze provést více aktualizací, pokud tyto aktualizace nejsou v konfliktu (proto chyba „mají konfliktní mody v aktualizaci“).

Protože "$push" :{"bugs" :[{"name":"bug1", "count":1}]} a "$inc" :{"bugs.0.count" :1} se oba pokoušejí upravit stejnou část dokumentu (jmenovitě pole "bugs"), jsou v konfliktu.

Pokud každá ovlivní jinou část dokumentu, lze kombinovat více aktualizací:

například:

> 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." }
> 

Aktualizace obsahovala tři různé operace ($pushAll, $inc a $set), ale mohla být úspěšně dokončena, protože každá operace ovlivnila jinou část dokumentu.

Uvědomuji si, že to není přesně to, co jste chtěli udělat, ale doufejme, že vám to trochu lépe porozumí tomu, jak aktualizace fungují, a možná vám poskytne nějaké nápady, jak mohou být vaše aktualizace a/nebo dokumenty restrukturalizovány tak, aby vykonávaly funkce, které vaše aplikace vyžaduje. Hodně štěstí.




  1. Jak mohu zadat dotaz na odlišné hodnoty v Mongoose?

  2. Django Redis Chyba neznámého příkazu 'BZPOPMIN'

  3. Nelze připojit Redis Cluster v Elasticache k PHP pomocí knihovny phpredis

  4. Mezipaměť v paměti s vypršením platnosti LRU