Setidaknya di shell Anda dapat membedakan apakah dokumen itu dimodifikasi atau tidak (lihat 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 })
Pembaruan untuk Node
Saat Anda menggunakan collection.update(criteria, update[[, options], callback]);
Anda dapat mengambil jumlah record yang telah diubah.
Dari simpul dokumen
Pembaruan Lain
Tampaknya setidaknya dalam versi 1.4.3 driver Mongo Node asli tidak berperilaku seperti yang didokumentasikan. Dimungkinkan untuk bekerja menggunakan API massal (diperkenalkan di 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();
});