2012-10-02 16 views
6

He estado en Google por un tiempo, no estoy seguro de si Spring Data MongoDB es compatible con el guardado masivo.Spring Data MongoDB support bulk insert/save

Necesito guardar una colección de documentos en mongo como atómicos, ya sea todos guardados o ninguno guardado.

¿Alguien puede compartir un enlace o algún código de muestra para esto?

+1

No hay concepto de transacciones en MongoDB. Cada operación es atómica pero no se puede realizar una operación de almacenamiento masivo. –

Respuesta

12

Cuando realiza un guardado a través del controlador MongoDB Java, solo puede pasar un solo documento a MongoDB.

Cuando hace una inserción, puede pasar un elemento único o puede pasar una serie de elementos. Lo último es lo que dará como resultado una "inserción masiva" (es decir, un comando de inserción único por parte del cliente dará como resultado la inserción de múltiples documentos en el servidor).

Sin embargo, dado que MongoDB no admite una noción de transacción, si una de las inserciones falla, no hay manera de indicar que los documentos insertados previamente deben eliminarse o retrotraerse.

Por motivos de atomicidad, cada inserción de documento es una operación separada y no hay forma admitida de hacer que MongoDB inserte todo o ninguno.

Si esto es algo que su aplicación requiere que puede haber otras formas de lograrlo: - cambiar su esquema para que éstos son subdocumentos de un documento único progenitor (entonces no es técnicamente sólo una "inserción" de los padres documento) - escriba la semántica de la transacción en el código de su aplicación - utilice una base de datos que admita de forma nativa transacciones de confirmación en dos fases.

Cuestiones relacionadas