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

Træk og sæt til på samme tid med mongo

Fejlen er stort set, hvad den betyder, da du ikke kan handle på to ting af den samme "sti" i den samme opdateringsoperation. De to operatorer, du bruger, behandler ikke sekventielt, som du måske tror, ​​de gør.

Du kan dog gøre dette med så "sekventiel" som du overhovedet kan få med "bulk" operations API eller anden form for "bulk" opdatering. Inden for rimelighedens grænser selvfølgelig, og også omvendt:

var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags":  2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });

bulk.execute();

Ikke en garanti for, at intet andet vil forsøge at ændre, men det er så tæt på, som du vil komme i øjeblikket.

Se også den rå "update"-kommando med flere dokumenter.



  1. sql-forespørgsel til mongodb?

  2. Meteor, definer samlinger dynamisk

  3. Er der nogen anbefalet værdi af COUNT for SCAN / HSCAN kommando i REDIS?

  4. Sådan installeres Redis