MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara memeriksa apakah $addToSet Mongo adalah duplikat atau tidak

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();
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Basis Data NoSQL Paling Populer yang Didukung oleh ClusterControl

  2. Dari mat-select save data ke database MongoDB

  3. Konkurensi di gopkg.in/mgo.v2 (Mongo, Go)

  4. Bagaimana Trello menyimpan data di MongoDB? (Koleksi per papan?)

  5. Antarmuka deserialisasi di MongoDB menggunakan C # - Nilai diskriminator tidak diketahui