我有一个查询,当我使用 $group 时错误显示“字段“$name 必须是累加器对象”,如果删除字段“$name”一切正常并且我尝试仅使用“name”而不是“$name”并且错误继续存在。
User.aggregate([
{
$match: {
"storeKey": req.body.store
}
},
{
$group: {
"_id": "$_id",
"name": "$name",
"count": {
"$sum": 1
},
"totalValue": {
"$sum": "$value"
}
}
},
{
$sort: sort
},
{
$skip: req.body.limit * req.body.page
},
{
$limit: req.body.limit
}
])...
最佳答案
有些聚合运算符只能在$group
中使用聚合并命名为$group accumulators
正如您使用的 $sum
在这里您还必须使用 name
键
{ "$group": {
"_id": "$_id",
"name": { "$first": "$name" }, //$first accumulator
"count": { "$sum": 1 }, //$sum accumulator
"totalValue": { "$sum": "$value" } //$sum accumulator
}}
Accumulator 就像元素数组,它累积为数组。 $first -> 给出名字组中的第一个名字
例子:
所以如果你有 $_id
相同但不同的名字 ["Darik","John"]
指定 $first
将给出 Darik & 同样地 $last
将给出 John
关于mongodb - 字段 "$name"必须是累加器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440636/