Quando si effettua un salvataggio con il driver Java MongoDB, è possibile passare un solo documento a MongoDB.
Quando si esegue un inserimento, è possibile passare un singolo elemento o passare una serie di elementi. Quest'ultimo è ciò che risulterà in un "bulk-insert" (cioè, il comando di inserimento singolo da parte del client comporterà l'inserimento di più documenti sul server).
Tuttavia, poiché MongoDB non supporta la nozione di transazione, se uno degli inserimenti fallisce, non c'è modo di indicare che i documenti precedentemente inseriti devono essere cancellati o ripristinati.
Ai fini dell'atomicità, ogni inserimento di documento è un'operazione separata e non vi è alcun modo supportato per fare in modo che MongoDB inserisca tutto o nessuno.
Se questo è qualcosa che l'applicazione richiede ci possono essere altri modi per realizzarla: - cambiare il vostro schema in modo che questi sono documenti secondari di un unico documento genitore (poi c'è tecnicamente solo un "insert" del genitore documento) - scrivere la semantica della transazione nel codice dell'applicazione - utilizzare un database che supporta in modo nativo due transazioni di commit a fasi.
fonte
2012-10-02 17:16:13
Non esiste alcun concetto di transazioni in MongoDB. Ogni operazione è atomica ma un salvataggio in serie non può essere. –