Frage

Ich war schon eine Weile Google, nicht sicher, ob die Federdaten mongodb für die Bulk Save unterstützt.

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

Kann jemand einen Link oder einen Sample-Code dafür teilen?

War es hilfreich?

Lösung

Wenn Sie einen Spart über den JongoDB-Java-Treiber speichern, können Sie nur ein einzelnes Dokument an mongodb weitergeben.

Wenn Sie einen Einfügen ausführen, können Sie ein einzelnes Element bestehen, oder Sie können ein Array von Elementen bestehen. Letzteres ist, was zu einem "Bulk-Einsatz" führt (d. H. Einzelner Einfügenbefehl des Clients führt dazu, dass auf dem Server mehrere Dokumente eingefügt werden).

Da MONGODB jedoch keinen Begriff der Transaktion unterstützt, wenn eine der Einsätze nicht fehlschlägt, gibt es keine Möglichkeit, anzugeben, dass zuvor eingefügte Dokumente gelöscht oder zurückgerollt werden sollen.

Für die Zerstäuberzwecke ist jeder Dokumenteinsatz ein separater Betrieb und es gibt keine unterstützte Möglichkeit, MONGODB entweder alle oder keine einzulegen.

Wenn dies etwas ist, das Ihre Bewerbung erfordert, dass es andere Möglichkeiten gibt, um ihn zu erreichen: - Ändern Sie Ihr Schema, damit diese Unterkompraler eines einzelnen übergeordneten Dokuments sind (Dann gibt es technisch nur einen "Einfügen" des übergeordneten Dokuments) - Schreiben Sie die Transaktionsemantik in Ihren Anwendungscode - Verwenden Sie eine Datenbank, die nativ zwei Phase-Commit-Transaktionen unterstützt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top