sql >> Databáze >  >> NoSQL >> MongoDB

Jak zkontrolovat, zda Mongo's $addToSet byl duplikát nebo ne

Alespoň v shellu můžete rozlišit, zda byl dokument upraven nebo ne (viz 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 })

Aktualizace pro Node

Když použijete collection.update(criteria, update[[, options], callback]); můžete získat počet záznamů, které byly změněny.

Z uzlu docs

Další aktualizace

Zdá se, že přinejmenším ve verzi 1.4.3 se nativní ovladač Mongo Node nechová tak, jak je zdokumentováno. Je možné obejít to pomocí hromadného API (zavedené v 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. Mongo:vyhledejte vnořený dokument bez tečkové notace

  2. Jak získat všechny klíče z Redis pomocí šablony redis

  3. Mongo zobrazuje chybu duplicitního klíče v poli _id_ v aplikaci Meteor

  4. Jak vypočítat průměr za den pole pomocí MongoDB?