java 操作monggodb批量插入数据,根据_id存在新增不存在修改
时间: 2023-12-21 08:05:10 浏览: 128
可以使用 MongoDB 的 BulkWrite API 实现 Java 批量插入数据,根据 _id 存在则新增,不存在则修改。
示例代码如下:
```java
MongoCollection<Document> collection = database.getCollection("collection_name");
List<WriteModel<Document>> bulkWrites = new ArrayList<>();
// 待插入或更新的文档列表
List<Document> documents = new ArrayList<>();
documents.add(new Document("_id", 1).append("name", "Alice"));
documents.add(new Document("_id", 2).append("name", "Bob"));
documents.add(new Document("_id", 3).append("name", "Charlie"));
for (Document doc : documents) {
UpdateOneModel<Document> updateModel = new UpdateOneModel<>(
Filters.eq("_id", doc.get("_id")),
new Document("$set", doc),
new UpdateOptions().upsert(true)
);
bulkWrites.add(updateModel);
}
BulkWriteResult result = collection.bulkWrite(bulkWrites);
System.out.println("插入/更新的文档数量:" + result.getModifiedCount());
```
在上述代码中,我们首先定义了一个 `MongoCollection` 对象,然后构造了一个包含多个待插入或更新的文档的列表。接着,我们遍历文档列表,对于每个文档,使用 `UpdateOneModel` 类型的对象进行更新或插入操作,`Filters.eq("_id", doc.get("_id"))` 表示按照 `_id` 字段查找对应的文档,`new Document("$set", doc)` 表示将文档中所有字段都更新为新值,`new UpdateOptions().upsert(true)` 表示如果文档不存在则插入新文档。
最后,我们调用 `collection.bulkWrite()` 方法执行批量插入或更新操作,该方法返回一个 `BulkWriteResult` 对象,其中包含了操作结果的统计信息。
阅读全文