sql >> Database teknologi >  >> NoSQL >> MongoDB

flere mongo-opdateringsoperatør i en enkelt erklæring?

Flere opdateringer kan udføres på det samme dokument, så længe disse opdateringer ikke er i konflikt (derfor fejlen "har modstridende mods i opdatering").

Fordi "$push" :{"bugs" :[{"name":"bug1", "count":1}]} og "$inc" :{"bugs.0.count" :1} begge forsøger at ændre den samme del af dokumentet (nemlig "bugs"-arrayet), de er i konflikt.

Flere opdateringer kan kombineres, hvis hver af dem påvirker en anden del af dokumentet:

for eksempel:

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

Opdateringen indeholdt tre forskellige operationer ($pushAll, $inc og $set), men kunne gennemføres med succes, fordi hver operation påvirkede en anden del af dokumentet.

Jeg er klar over, at det ikke ligefrem er, hvad du håbede at gøre, men forhåbentlig vil det give dig en lidt bedre forståelse af, hvordan opdateringer fungerer, og måske give nogle ideer til, hvordan dine opdateringer og/eller dokumenter kan blive omstruktureret for at udføre den funktionalitet, som din ansøgning kræver. Held og lykke.




  1. Beregn gennemsnitsværdien af ​​et mongodb-dokument

  2. Redis - Sorteret sæt, find vare efter egenskabsværdi

  3. Håndtering af MySQL, MongoDB og PostgreSQL med ChatOps fra Slack

  4. MongoDB virker ikke. FEJL:dbpath (/data/db) eksisterer ikke.