mongodb使用条件查找文档并更新相应文档中的另一个字段

问题描述 投票:0回答:2

我想在我的收藏中找到任何文件:

  • 它的爱好领域是空的
  • 或其业余爱好领域不存在

然后将其爱好字段的值设置为等同于其运动场。

 db.myCollection.update(
            { $or: [{"hobby": {$exists: false} },{"hobby": ""}]}
        , {
            $set: {
                hobby: ????sports
            }
        }, {
            multi: true
        },
        function(err, result) {
            console.log(result);
            console.log(err);
        })  

使用上面的命令,我想我将把sports的值作为固定值传递给所有匹配的文档。有没有什么方法可以获得相应的运动价值并将其设定为业余爱好?

javascript arrays mongodb loops mongodb-query
2个回答
0
投票

这是修改后的版本正确更新值:

   db.myCollection.find({ 
      $or: [{ "hobby": { $exists: false } }, { "hobby": "" }]
    }).toArray().forEach(function (item) {
        db.myCollection.update(
          { _id: item._id },
          { $set: { hobby: item.sports } },
          { multi: true }
        )
      })
    })

0
投票

您必须在2个查询中执行此操作:

db.myCollection.find({ 
  $or: [{ "hobby": { $exists: false } }, { "hobby": "" }]
}).toArray().forEach(function (item) {
    db.myCollection.update(
      { _id: item._id },
      { $set: { hobby: item.sports } },
      { multi: true }
    )
  })
})
© www.soinside.com 2019 - 2024. All rights reserved.