2012-10-02 18 views
6

Ich habe seit einiger Zeit google, nicht sicher, ob Spring Data MongoDB für Bulk speichern unterstützt.Spring Data MongoDB Unterstützung Bulk einfügen/speichern

Ich muss eine Sammlung von Dokumenten in Mongo als atomare speichern, entweder alle gespeichert oder keine gespeichert.

Kann jemand einen Link oder einen Beispielcode dafür teilen?

+1

Es gibt kein Konzept von Transaktionen in MongoDB. Jede Operation ist atomar, aber eine Massenspeicherung kann nicht sein. –

Antwort

12

Wenn Sie über den MongoDB-Java-Treiber speichern, können Sie nur ein einzelnes Dokument an MongoDB übergeben.

Wenn Sie eine Einfügung durchführen, können Sie ein einzelnes Element übergeben oder ein Array von Elementen übergeben. Letzteres führt zu einer "Masseneinfügung" (d. H. Ein einzelner Einfügebefehl durch den Client führt dazu, dass mehrere Dokumente auf dem Server eingefügt werden).

Da MongoDB jedoch keine Transaktionsbegriffe unterstützt, gibt es keine Möglichkeit, anzugeben, dass zuvor eingefügte Dokumente gelöscht oder zurückgesetzt werden sollen, wenn eine der Einfügungen fehlschlägt.

Zum Zwecke der Atomarität ist jede Dokumenteinfügung eine separate Operation und es gibt keine unterstützte Möglichkeit, MongoDB entweder alle oder keine einzufügen.

Ist dies etwas, das Ihre Anwendung erfordert kann es auch andere Möglichkeiten, um es zu erreichen: - ändern Sie Ihr Schema, so dass diese Teildokumente eines einzelnen Stammdokuments sind (dann gibt es technisch nur ein „Einfügen“ des Mutter Dokument) - Schreiben Sie die Transaktionssemantik in Ihren Anwendungscode - verwenden Sie eine Datenbank, die zweiphasige Festschreibungstransaktionen nativ unterstützt.

Verwandte Themen