在Mongodb中使用更新查询时从数据库中选择内容?

时间:2017-07-18 11:33:14

标签: mongodb

我想更新所有数据库: -

他们的模特如下:

{
    "_id" : ObjectId("593800da81dd4240d42f0c98"),
    "leaveType" : ObjectId("5927da8b7094b726fecaa3b5"),
    "units" : 20,
    "employee" : ObjectId("59283f772c3bd82eaca28153"),
    "__v" : 0
}

我想要的是,更新所有模型,将新值插入unitsAvailed,并将相同的数字作为对应的单位

{
    "_id" : ObjectId("593800da81dd4240d42f0c98"),
    "leaveType" : ObjectId("5927da8b7094b726fecaa3b5"),
    "units" : 20,
    "unitsAvailed" : 20,
    "employee" : ObjectId("59283f772c3bd82eaca28153"),
    "__v" : 0
}

3 个答案:

答案 0 :(得分:0)

您可以使用此查询更新所有文档

var cursor = db.collectionName.find({});
cursor.forEach(function(data) {
  data.unitsAvailed = data.units;
  data.save();
});

答案 1 :(得分:0)

您可以使用db.eval()运行服务器端代码。请参阅下面的示例

 db.eval(function() { 
  db.collection.find({tag : "refurb"}).forEach(function(e) {
    e.Price = e.Price * 0.5;
    db.collection.save(e);
  });
});

请参阅Multiply field by value in Mongodb

答案 2 :(得分:-1)

您可以使用:

 db.collectionName.updateMany({},{$set:{unitsAvailed: 20}})