使用mongodb中的单个查询读取和更新多个文档

时间:2017-06-05 12:54:42

标签: mongodb mongodb-query

我的数据库(MongoDB)中保存了以下类型的数据

{
    "_id" : ObjectId("5935359293ed1f37e52785fe"),
    "_class" : "com.example.bean.UserActivity",
    "appId" : NumberLong(1234),
    "uId" : "9999",
    "itemId" : "10024",
    "timestamp" : "2017-06-05T10:42:26.896Z",
    "status" : 0
}

USECASE

我想在status = 0

的数据库中阅读并更新我的所有文档

我尝试使用此查询解决我的用例

    db.userActivity.findAndModify(
        { 
          query: { 'appId' : 1234, 'status' : 0},
          update: { $inc: { 'status': 1 } } 
       });

它工作但它只修改了一个文档

我的用例是查找所有文档并更新其状态?

注意:使用以下查询我可以更新多个文档,但我想阅读以及使用单个查询更新多个文档。

MongoDB可以吗?

db.userActivity.update({ 'appId' : 1234, 'status' : 0}, {$set: { 'status': 1 }}, {multi: true})

或者是否有任何替代方式来实现它。

修改1 完整用例

我想阅读数据库中包含特定appIdstatus = 0的所有文档,并在阅读后设置status = 1

  • 状态0 =未读
  • 状态1 =阅读

在此之后,我想将它们写在文件中,以便我可以将其上传到文件服务器。

我有一个工作人员(一个单独的线程),他们定期让我们说(每24小时后)从MongoDB读取所有文件并创建一个文件。

为什么我保持状态是为了避免我的工作人员重复阅读。

0 个答案:

没有答案