Operações de gravação em massa
A partir de v2.6, O MongoDB suporta comandos de gravação em massa para operações de inserção, atualização e exclusão de uma forma que permite ao driver implementar a semântica correta para BulkWriteResult
e BulkWriteException
.
Existem dois tipos de operações em massa, operações em massa ordenadas e não ordenadas:
As operações em massa ordenadas executam todas as operações em ordem e erro no primeiro erro de escrita.
As operações em massa não ordenadas executam todas as operações e relatam todos os erros. Operações em massa não ordenadas não garantem uma ordem de execução.
Importante
Este guia usa as implementações do Subscriber
, que são descritas noPrimário de início rápidodo .
O seguinte código fornece exemplos utilizando operações ordenadas e não ordenadas:
// Ordered bulk operation - order is guaranteed collection.bulkWrite( Arrays.asList(new InsertOneModel<>(new Document("_id", 4)), new InsertOneModel<>(new Document("_id", 5)), new InsertOneModel<>(new Document("_id", 6)), new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))), new DeleteOneModel<>(new Document("_id", 2)), new ReplaceOneModel<>(new Document("_id", 3), new Document("_id", 3).append("x", 4)))) .subscribe(new ObservableSubscriber<BulkWriteResult>()); // Unordered bulk operation - no guarantee of order of operation collection.bulkWrite( Arrays.asList(new InsertOneModel<>(new Document("_id", 4)), new InsertOneModel<>(new Document("_id", 5)), new InsertOneModel<>(new Document("_id", 6)), new UpdateOneModel<>(new Document("_id", 1), new Document("$set", new Document("x", 2))), new DeleteOneModel<>(new Document("_id", 2)), new ReplaceOneModel<>(new Document("_id", 3), new Document("_id", 3).append("x", 4))), new BulkWriteOptions().ordered(false)) .subscribe(new ObservableSubscriber<BulkWriteResult>());