集合内$sum的使用-Mongodb

集合内$sum的使用-Mongodb,mongodb,operators,Mongodb,Operators,我有以下问题 我想在mongodb数据库中为每个文档创建一个新字段。此字段的值应包含文档中其他两个字段的总和 我试过这个: db.collection('restaurants').updateMany( {}, { $set: { allScores: {$sum: "$grades.score"} } } ) 但它不起作用。我得到以下错误: “allScores.$sum”中以美元($)为前缀的字段“$sum”对存储无效 为什么我不能在$set中使用

我有以下问题

我想在mongodb数据库中为每个文档创建一个新字段。此字段的值应包含文档中其他两个字段的总和

我试过这个:

  db.collection('restaurants').updateMany(
    {}, { $set: 
      { allScores: {$sum: "$grades.score"} } 
    }
  )
但它不起作用。我得到以下错误:

“allScores.$sum”中以美元($)为前缀的字段“$sum”对存储无效

为什么我不能在$set中使用$sum? 我能做些什么呢

我使用的数据库可以在这里找到:

谢谢

朱莉娅

您可以使用with来执行此操作:

db.collection('restaurants').aggregate([
    {$addFields : {allScores : {$sum : "$grades.score"}}},
    {$out : "restaurants"}
])
此代码的作用是:

1-查找餐厅内的所有文件
2-将字段
allScores
添加到每个文档中

3-将所有文档保存回收藏
餐厅

欢迎来到StackOverflow!您正在使用哪个版本的MongoDB?从4.2开始,update命令支持聚合管道操作符。这是一次性更新吗?不幸的是,这不起作用。当我刷新Robo3T时,我所有的文档中都没有添加任何字段……这很奇怪。我使用Robo3T对其进行了测试,它成功地创建了
allScores
字段。您希望在文档根目录中添加新字段,对吗?我需要将.toArray()添加到聚合中,然后它就可以工作了。。。你有胶水吗?为什么?你能在这里张贴你正在使用的确切查询吗?
db.collection('restaurants').aggregate([
    {$addFields : {allScores : {$sum : "$grades.score"}}},
    {$out : "restaurants"}
])