该字段必须是 mongo 中的累加器对象
The field must be an accumulator object in mongo
我正在执行聚合 query.My 要求是我有以下格式的文档:
{
"name":"a","age":20},
{
"name":"b","age":23},
{
"name":"a","age":26}
我需要对姓名字段中包含 "a" 的所有姓名的年龄求和。
我正在执行以下操作,但它给了我一个错误 "The field 'name' must be an accumulator object":
db.collection('students').aggregate({
$group: {"name": "a", "sum": {$sum: '$age'}}
}, {
$project: {sum: '$sum'}
}, (e, d) => {
if (!e) {
var e = d.stream({transform: JSON.stringify});
console.log("answer")
console.log(e);
deferred.resolve(e);
} else {
console.log(e)
}
})
我改变了你的汇总 query.Try 如下:
db.collection('students').aggregate(
[
{
$match: {
name: "a"
}
},
{
$group: {_id: "$name",
"sum": {
$sum: '$age'
}
}
},
{
$project: {
sum: 1
}
], (e, d) => {
if (!e) {
var e = d.stream({transform: JSON.stringify});
console.log("answer")
console.log(e);
deferred.resolve(e);
} else {
console.log(e)
}
})
在这里,您缺少正确的匹配过滤器。我们应该使用 $match 过滤器来找出特定的结果,并为我们在 $group 中执行操作的属性使用“_id”。
您的查询结构将是 -
db.students.aggregate(
[
{
$match: {
"name": "a"
}
},
{
$group: {
"_id": "$name",
totalTte: {
$sum: "$age"
}
}
},
{
$project: {
sum: 1
}
}
])
我正在执行聚合 query.My 要求是我有以下格式的文档:
{
"name":"a","age":20},
{
"name":"b","age":23},
{
"name":"a","age":26}
我需要对姓名字段中包含 "a" 的所有姓名的年龄求和。 我正在执行以下操作,但它给了我一个错误 "The field 'name' must be an accumulator object":
db.collection('students').aggregate({
$group: {"name": "a", "sum": {$sum: '$age'}}
}, {
$project: {sum: '$sum'}
}, (e, d) => {
if (!e) {
var e = d.stream({transform: JSON.stringify});
console.log("answer")
console.log(e);
deferred.resolve(e);
} else {
console.log(e)
}
})
我改变了你的汇总 query.Try 如下:
db.collection('students').aggregate(
[
{
$match: {
name: "a"
}
},
{
$group: {_id: "$name",
"sum": {
$sum: '$age'
}
}
},
{
$project: {
sum: 1
}
], (e, d) => {
if (!e) {
var e = d.stream({transform: JSON.stringify});
console.log("answer")
console.log(e);
deferred.resolve(e);
} else {
console.log(e)
}
})
在这里,您缺少正确的匹配过滤器。我们应该使用 $match 过滤器来找出特定的结果,并为我们在 $group 中执行操作的属性使用“_id”。
您的查询结构将是 -
db.students.aggregate(
[
{
$match: {
"name": "a"
}
},
{
$group: {
"_id": "$name",
totalTte: {
$sum: "$age"
}
}
},
{
$project: {
sum: 1
}
}
])