批量写入操作
从 v 2.6开始, MongoDB 支持针对插入、更新和删除操作的批量写入命令,同时允许驱动程序为 BulkWriteResult
和BulkWriteException
实现正确的语义。
批量操作有两种类型:有序批量操作和无序批量操作:
有序批量操作按顺序执行所有操作,并在出现第一个写入错误时出错。
无序批量操作执行所有操作并报告任何错误。 无序批量操作不保证执行顺序。
重要
本指南使用Subscriber
实现,如快速入门入门知识中所述。
以下代码提供了使用有序和无序操作的示例:
// 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>());