MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

créer un document mongodb avec des sous-documents de manière atomique ?

Mettre à jour avec upsert=true peut être utilisé pour effectuer une "insertion ou mise à jour" atomique (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag ).

Par exemple, si nous voulons nous assurer qu'un document dans la collection Front avec une url spécifique est inséré exactement une fois, nous pourrions exécuter quelque chose comme :

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

Les opérations sur un seul document dans MongoDB sont toujours atomiques. Si vous effectuez des mises à jour qui s'étendent sur plusieurs documents, aucune atomicité n'est garantie. Dans de tels cas, vous pouvez vous demander :ai-je vraiment besoin que les opérations soient atomiques ? Si la réponse est non, vous vous débrouillerez probablement avec des données potentiellement incohérentes. Si la réponse est oui et que vous souhaitez vous en tenir à MongoDB, consultez le modèle de conception sur Commits en deux phases .