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

时间:2017-12-17 13:11:11

标签: javascript arrays mongodb loops mongodb-query

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

  • 爱好字段为空
  • 或其爱好字段不存在

然后将其爱好字段的值设置为等于其体育字段。

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

使用上面的命令,我想我会将 sports 的值作为固定值传递给所有匹配的文档。有没有办法获取相应的体育值并将其设置为业余爱好

2 个答案:

答案 0 :(得分: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 }
    )
  })
})

答案 1 :(得分: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 }
        )
      })
    })