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