查询文档,更新并返回MongoDB

7lrncoxx  于 2022-12-03  发布在  Go
关注(0)|答案(1)|浏览(153)

在我基于MongoDB3.2的应用程序中,我想执行文档处理。为了避免对同一文档的重复处理,我想更新它的标志并在数据库中更新此文档。
可能的方法是:
1.查询数据:FindIterable<Document> documents = db.collection.find(query); .
1.对这些文档执行一些业务逻辑。
1.迭代documents,更新每个文档并将其存储在新集合中。
1.使用db.collection.updateMany();将新集合推入数据库。
从理论上讲,这种方法应该可行,但我不确定这是否是最佳方案。
在MongoDB Java API中是否有任何方法可以执行以下两个操作:
1.查询文档(从DB中获取文档并传递给单独的方法);
1.将其更新后存入数据库;
以一种比上述方法更优雅的方式?

xesrikrc

xesrikrc1#

您可以使用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);
    }
)

相关问题