如何更新mongodb中所有文档的字段?

时间:2019-09-23 02:12:19

标签: mongodb

我正在尝试做

UPDATE TABLENAME SET COLUMN = COLUMN * 0.725 
在mongodb中的

这是我尝试的方法,但是似乎没有用。救命!

db.costs.update(
  {$mul: {totalcost: NumberDecimal("0.725")}},
  {multi: true}
);

产生

  

“ errmsg”:“未知的顶级运算符:$ mul”

及以下

db.costs.update(
  { recordId: {$regex:"*"}},
  {$mul: {totalcost: NumberDecimal("0.725")}},
  {multi: true}
);

生成

  

“ errmsg”:“正则表达式无效:无可重复”

很显然,我缺少语法并仔细阅读了文档,但是找不到任何可以帮助的东西。

谢谢

2 个答案:

答案 0 :(得分:1)

以下查询可以为我们提供预期的输出:

db.collection.updateMany({},
{
    $mul:{
        "totalCost": 0.725
    }
})

数据集:

{ "_id" : ObjectId("5d882f0d38db7cf8d3f75cdd"), "totalCost" : 1000 }
{ "_id" : ObjectId("5d882f0d38db7cf8d3f75cde"), "totalCost" : 1200 }
{ "_id" : ObjectId("5d882f0d38db7cf8d3f75cdf"), "totalCost" : 1500 }
{ "_id" : ObjectId("5d882f0d38db7cf8d3f75ce0"), "totalCost" : 1800 }

输出:

{ "_id" : ObjectId("5d882f0d38db7cf8d3f75cdd"), "totalCost" : 725 }
{ "_id" : ObjectId("5d882f0d38db7cf8d3f75cde"), "totalCost" : 870 }
{ "_id" : ObjectId("5d882f0d38db7cf8d3f75cdf"), "totalCost" : 1087.5 }
{ "_id" : ObjectId("5d882f0d38db7cf8d3f75ce0"), "totalCost" : 1305 }

答案 1 :(得分:0)

已编辑。看起来您正在尝试进行批量更新。

var bulk = db.getCollection('collection-name').initializeUnorderedBulkOp()
bulk.find({}).update({ $mul : {points: 2}}); // will multiply the field by 2
bulk.execute();

有 应该管用。有关更多信息,请查看unorderedordered操作。