在我的基于MongoDB 3.2的应用程序中,我想执行文档处理。为了避免对同一文档的重复处理,我想更新其标志并在数据库中更新该文档。
可能的方法是:
FindIterable<Document> documents = db.collection.find(query);
。documents
,更新每个文档并将其存储在新的集合中。db.collection.updateMany();
将新集合推送到数据库。理论上,这种方法应该有效,但我不确定它是最佳方案。
我的问题:
MongoDB Java API中是否有任何方法可以执行以下两个操作:
与上述方法相比,是否更优雅?
答案 0 :(得分:1)
您可以使用update:
在原地更新文档db.collection.update(
{query},
{update},
{multi:true}
);
它将遍历集合中与query
中指定的update
和更新字段匹配的所有文档。
修改强>
要将某些业务逻辑应用于单个文档,您可以按以下方式迭代匹配的文档:
db.collection.find({query}).forEach(
function (doc) {
// your logic business
if (doc.question == "Great Question of Life") {
doc.answer = 42;
}
db.collection.save(doc);
}
)