sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Crear un documento mongodb con subdocumentos atómicamente?

Actualizar con upsert=true se puede usar para realizar una "inserción o actualización" atómica (http://docs.mongodb.org/manual/core/update/#update-operations-with-the-upsert-flag ).

Por ejemplo, si queremos asegurarnos de que un documento en la colección Front con una url específica se inserta exactamente una vez, podríamos ejecutar algo como:

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

Las operaciones en un solo documento en MongoDB son siempre atómicas. Si realiza actualizaciones que abarcan varios documentos, no se garantiza la atomicidad. En tales casos, puede preguntarse:¿realmente necesito que las operaciones sean atómicas? Si la respuesta es no, entonces probablemente encontrará la manera de trabajar con datos potencialmente inconsistentes. Si la respuesta es sí y desea continuar con MongoDB, consulte el patrón de diseño en Confirmaciones de dos fases .