MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak sprawdzić, czy $addToSet Mongo był duplikatem, czy nie?

Przynajmniej w powłoce możesz rozróżnićczy dokument zostałzmodyfikowany czy nie (zobacz 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 })

Aktualizacja dla węzła

Gdy używasz collection.update(criteria, update[[, options], callback]); możesz pobrać liczbę rekordów, które zostały zmodyfikowane.

Z węzła dokumenty

Kolejna aktualizacja

Wydaje się, że przynajmniej w wersji 1.4.3 natywny sterownik Mongo Node nie zachowuje się zgodnie z dokumentacją. Można obejść ten problem przy użyciu zbiorczego API (wprowadzonego w 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. Czy mogę wykonać nieprzetworzone zapytanie MongoDB w sterowniku node-mongodb-native?

  2. Usuń element z tablicy w mongodb

  3. Czy muszę wyraźnie zamknąć połączenie?

  4. Wyszukiwanie pełnotekstowe MongoDB ze sterownikiem haskell

  5. Jak sortować mongodb z pymongo