我正在mongodb中进行聚合,并从下面的代码中获得“管道阶段规范对象必须恰好包含一个字段”
db.HomeworkAggregate.aggregate([
{
$match:{
number_of_employees:{
$lte:500}},
founded_year:{
$gte:2000}},
{$group: {
_id: "$name"},
description:"$description"},
{$sort:{
founded_year:1}}
])
我不确定是什么原因造成的,并且已经使用它一段时间了,非常感谢您的帮助。
答案 0 :(得分:0)
查询中的管道阶段括号有问题
正确的安排应该是
db.HomeworkAggregate.aggregate([
{$match:{
number_of_employees:{
$lte: 500
},
founded_year:{
$gte: 2000
}
}},
{$group: {
_id: "$name",
description: {$first: "$description"} // you can use other operators also
founded_year: {$first: "$founded_year"}
}},
{$sort:{
founded_year: 1
}}
])
您会收到一条错误消息,“管道阶段规范对象必须只包含一个字段”,因为某些无法识别的管道阶段,因为左括号和右括号不匹配。
第二,当您按“ founded_year”排序时,应将其添加到$ group阶段;否则,光标结果将没有“ founded_year”字段,并且不会针对“ founded_year”进行排序“。
此外,您应该在$ group阶段使用$group accumulators
。
如果您仍然遇到任何问题,请分享,