批量写入操作
从 v2.6 版本开始,MongoDB 支持批量写入命令,用于插入、更新和删除操作,允许驱动程序实现 BulkWriteResult
和 BulkWriteException
的正确语义。BulkWriteResult
和 BulkWriteException
。
批量操作有两种类型:有序和无序批量操作
有序批量操作按顺序执行所有操作,并在第一次写入错误时出错。
无序批量操作执行所有操作并报告任何错误。无序批量操作不保证执行顺序。
以下代码提供了使用有序和无序操作的示例
// 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>());