MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

criar documento mongodb com subdocumentos atomicamente?


Atualize com upsert=true pode ser usado para executar uma "inserção ou atualização" atômica (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag ).

Por exemplo, se quisermos garantir que um documento na coleção Front com url específico for inserido exatamente uma vez, poderíamos executar algo como:
db.Front.update(
    {url: 'http://example.com'},
    {$set: {
       url: 'http://example.com'},
       found: true
    }
)

As operações em um único documento no MongoDB são sempre atômicas. Se você fizer atualizações que abrangem vários documentos, nenhuma atomicidade será garantida. Nesses casos, você pode se perguntar:eu realmente preciso que as operações sejam atômicas? Se a resposta for não, você provavelmente encontrará seu caminho para trabalhar com dados potencialmente inconsistentes. Se a resposta for sim e você quiser continuar com o MongoDB, confira o padrão de design em Commits de duas fases .