Update met upsert=true
kan worden gebruikt om een atomaire "insert or update" uit te voeren (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag
).
Als we er bijvoorbeeld zeker van willen zijn dat een document in Front-collectie met een specifieke url
precies één keer wordt ingevoegd, kunnen we zoiets uitvoeren als:
db.Front.update(
{url: 'http://example.com'},
{$set: {
url: 'http://example.com'},
found: true
}
)
Bewerkingen op een enkel document in MongoDB zijn altijd atomair. Als u updates maakt die meerdere documenten omvatten, is er geen atomiciteit gegarandeerd. In dergelijke gevallen kun je je afvragen:heb ik echt nodig dat de operaties atomair zijn? Als het antwoord nee is, zult u waarschijnlijk uw weg vinden in het werken met mogelijk inconsistente gegevens. Als het antwoord ja is en je bij MongoDB wilt blijven, bekijk dan het ontwerppatroon op Tweefasenverplichtingen .