Актуализирайте с upsert=true
може да се използва за извършване на атомно „вмъкване или актуализиране“ (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag
).
Например, ако искаме да се уверим, че документ в предната колекция има конкретен url
се вмъква точно веднъж, можем да изпълним нещо като:
db.Front.update(
{url: 'http://example.com'},
{$set: {
url: 'http://example.com'},
found: true
}
)
Операциите върху един документ в MongoDB винаги са атомарни. Ако правите актуализации, които обхващат множество документи, не е гарантирана атомарност. В такива случаи можете да се запитате:наистина ли трябва операциите да бъдат атомарни? Ако отговорът е не, вероятно ще се ориентирате в работата с потенциално непоследователни данни. Ако отговорът е да и искате да се придържате към MongoDB, вижте шаблона за проектиране на Двуфазови ангажименти .