【发布时间】:2017-01-20 16:39:44
【问题描述】:
我正在尝试使用游标更新 Mongo DB 中的文档。我的 Mongo DB Java 驱动程序版本是 3.3.0。以下是我的代码 sn-p。
MongoCollection<Document> collection = mongoDb.getCollection("customer");
MongoCursor<Document> cursor = collection.find().iterator();
try{
while(cursor.hasNext()){
Document oldDoc = cursor.next();
//created new Document newDoc
collection.replaceOne(oldDoc, newDoc);
}
}catch(Exception e){
e.printStackTrace();
}
虽然这样,我可以更新文档,我认为这不是有效的方法,因为这里的集合被搜索了 2 次。我想用一些值更新旧文档,然后再更新想要使用 collection.update(oldDoc) 或 collection.save(oldDoc) 等方法保存它而不创建新文档。我搜索并发现了以下帖子。
Java, MongoDB: How to update every object while iterating a huge collection?
这正是我想要的,但我在新 API 中找不到 save() 方法。所以我在这里有 3 个问题。
- Mongo DB Java 驱动程序 3.3.0 API 中的 save() 方法是什么,我可以通过它在迭代游标时更新或保存文档?李>
- 是否有任何方法可以更新现有文档而无需在 Mongo DB Java 驱动程序 3.3.0 API 中创建新文档?
- 以上链接显示 save() 之前是 Mongo DB Java 驱动程序 API 的一部分。任何专家的答案,为什么它从 API 中被删除?
【问题讨论】:
-
你能看看this吗?
标签: java mongodb mongodb-java mongodb-java-3.3.0