sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man kontrollerar om Mongos $addToSet var en dubblett eller inte

Åtminstone i skalet kan du skilja på om dokumentet har ändrats eller inte (se nModified ).

> db.test4.update({_id:2}, {$addToSet: {tags: "xyz" }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.test4.update({_id:2}, {$addToSet: {tags: "xyz" }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Uppdatering för Node

När du använder collection.update(criteria, update[[, options], callback]); du kan hämta antalet poster som har ändrats.

Från noden docs

En annan uppdatering

Det verkar åtminstone i version 1.4.3 att den ursprungliga Mongo Node-drivrutinen inte beter sig som dokumenterat. Det är möjligt att kringgå med bulk-API:et (introducerat i Mongo 2.6):

var col = db.collection('test');
// Initialize the Ordered Batch
var batch = col.initializeOrderedBulkOp();
batch.find({a: 2}).upsert().updateOne({"$addToSet": {"tags": "newTag"}});
// Execute the operations
batch.execute(function(err, result) {
  if (err) throw err;
  console.log("nUpserted: ", result.nUpserted); 
  console.log("nInserted: ", result.nInserted); 
  console.log("nModified: ", result.nModified); // <- will tell if a value was added or not
  db.close();
});


  1. Hur grupperar jag en fråga med flera $cond?

  2. Hur man får det senaste meddelandet från chattkonversation i mongodb

  3. Installera CouchDB på Debian 9

  4. Är det möjligt att få en skiva av en skiva i Mongo?