I det mindste i skallen kan du skelne mellem, om dokumentet er blevet ændret eller ej (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 })
Opdatering til node
Når du bruger collection.update(criteria, update[[, options], callback]);
du kan hente antallet af poster, der blev ændret.
Fra noden docs
En anden opdatering
Det ser ud til i det mindste i version 1.4.3, at den oprindelige Mongo Node-driver ikke opfører sig som dokumenteret. Det er muligt at omgås ved at bruge bulk API (introduceret 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();
});