sql >> Databasteknik >  >> NoSQL >> MongoDB

skapa mongodb-dokument med underdokument atomärt?

Uppdatera med upsert=true kan användas för att utföra en atomär "insert or update" (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag ).

Till exempel om vi vill säkerställa ett dokument i Front-samlingen med specifik url är infogat exakt en gång, kan vi köra något i stil med:

db.Front.update(
    {url: 'http://example.com'},
    {$set: {
       url: 'http://example.com'},
       found: true
    }
)

Operationer på ett enda dokument i MongoDB är alltid atomära. Om du gör uppdateringar som sträcker sig över flera dokument, garanteras ingen atomicitet. I sådana fall kan du fråga dig själv:behöver jag verkligen att operationerna är atomära? Om svaret är nej, kommer du förmodligen att hitta runt och arbeta med potentiellt inkonsekventa data. Om svaret är ja och du vill hålla fast vid MongoDB, kolla in designmönstret på Tvåfas-åtaganden .




  1. Ta bort dokument från en mongodb-samling från node.js

  2. Dokumentstorlek i MongoDb

  3. Har WiredTiger från MongoDb prestandaproblemet med omallokering som MMAPv1

  4. Det går inte att ansluta till MongoDB Replica Set från annan server med robo3T och i C#