कम से कम शेल में आप अंतर कर सकते हैं कि दस्तावेज़ को संशोधित किया गया था या नहीं (देखें 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 })
नोड के लिए अपडेट
जब आप collection.update(criteria, update[[, options], callback]);
आप संशोधित किए गए रिकॉर्ड की संख्या पुनर्प्राप्त कर सकते हैं।
नोड से docs
एक और अपडेट
ऐसा लगता है कि कम से कम संस्करण 1.4.3 में मूल मोंगो नोड ड्राइवर दस्तावेज के रूप में व्यवहार नहीं कर रहा है। बल्क एपीआई (मोंगो 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();
});