sql >> Databáze >  >> NoSQL >> MongoDB

vytvořit mongodb dokument s vnořenými dokumenty atomicky?

Aktualizujte pomocí upsert=true lze použít k provedení atomického „vložení nebo aktualizace“ (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag ).

Například pokud se chceme ujistit, že dokument v kolekci Front se specifickou url je vložen přesně jednou, mohli bychom spustit něco jako:

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

Operace na jednom dokumentu v MongoDB jsou vždy atomické. Pokud provedete aktualizace, které zahrnují více dokumentů, není zaručena atomičnost. V takových případech si můžete položit otázku:Opravdu potřebuji, aby operace byly atomické? Pokud je odpověď ne, pak se pravděpodobně zorientujete v práci s potenciálně nekonzistentními daty. Pokud je odpověď ano a chcete zůstat u MongoDB, podívejte se na návrhový vzor na Dvoufázové závazky .




  1. Mongodb:Nepodařilo se připojit k serveru při prvním připojení

  2. jak použít mongoimport k importu souboru json

  3. Parametr projekce MongoDB nefunguje v findOne()

  4. Mongo datové modelování/aktualizace pro hlasování (nahoru a dolů)