查询文档,更新它并将其返回给MongoDB

在我的基于MongoDB 3.2的应用程序中,我想执行文档处理。 为了避免在同一文档上重复处理,我想更新它的标志并更新数据库中的这个文档。

可能的方法是:

  • 查询数据: FindIterable<Document> documents = db.collection.find(query);
  • 对这些文档执行一些业务逻辑。
  • 迭代documents ,更新每个文档并将其存储在新集合中。
  • 使用db.collection.updateMany();将新集合推送到数据库db.collection.updateMany();
  • 理论上,这种方法应该可行,但我不确定它是否是最佳方案。

    我的问题:
    MongoDB Java API有什么办法可以执行以下两个操作:

  • 查询文档(从数据库中获取它们并传递给单独的方法);
  • 更新它们,然后将更新的版本存储在数据库中;
  • 比较上面提出的方法更优雅的方式?


    您可以使用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);
        }
    )
    
    链接地址: http://www.djcxy.com/p/61955.html

    上一篇: Query documents, update it and return it back to MongoDB

    下一篇: atomic update or push element