MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

неуспешна актуализация на mongodb съответстващ документ

Не е провал, а по замисъл.

Под API за групови операции , ако предоставите стойност за актуализиране, която съответства на съществуваща стойност на документа, тогава тя не се маркира като променена и всъщност не прави никакъв опит да пренапише документа.

Прост тест:

db.junk.insert({ "a": 1 })
WriteResult({ "nInserted" : 1 })

db.junk.update({ "a": 1},{ "$set": { "a": 2 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.junk.update({ "a": 2 },{ "$set": { "a": 2 }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

db.junk.update({ "a": 2 },{ "$set": { "a": NumberInt(2) }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.junk.update({ },{ "$set": { "a": NumberInt(2) }})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

Всички операции в обвивката на MongoDB от версия 2.6 всъщност използват API за групови операции . Тук виждате WriteResult което идва от този API като доказателство, че това се случва.

Така че краткият случай тук е, че ако сте „вмъкнали ръчно“ елементи, които са от правилния тип, който модифицирате, тогава те не се променят.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо MongoDB заема толкова много място?

  2. Конфигуриране на MongoDB в Windows

  3. Уникален индекс на Mongoose на поддокумента

  4. Как да предотвратите вмъкването на функция за актуализиране в MongoDB от Meteor?

  5. WSO2 DSS поддръжка за mongodb 3.x.x