sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan kontrolleres, om Mongos $addToSet var en dublet eller ej

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


  1. Hvordan henter man kun udvalgte mongo-id'er ved hjælp af spring data mongorepository-metoden?

  2. Angivelse af Mongo-forespørgselsparametre fra klientcontroller (MEAN.JS)

  3. Er redis på Heroku muligt uden en tilføjelse?

  4. Redis jokertegn slette script ved hjælp af EVAL, SCAN og DEL returnerer skrivekommandoer ikke tilladt efter ikke-deterministiske kommandoer