我有一个这种结构的集合:
{ "_id" : "01002", "city" : "CUSHMAN", "loc" : [ -72.51564999999999, 42.377017 ], "pop" : 36963, "state" : "MA" }
我想使用Aggregate框架来执行此查询:
db.US.aggregate([{$group:{_id:{"state":"$state"}}, sum:{$sum:"$pop"}}])
我收到此错误: "命令'汇总' failed:exception:管道阶段规范对象必须只包含一个字段。 (回复:{" errmsg":"例外:管道阶段规范对象必须只包含一个字段。","代码":16435,"好的":0.0})"
我得到这个错误,看起来很简单 任何人都可以帮忙 感谢
答案 0 :(得分:3)
你的括号有点不合适。
db.US.aggregate([{$group:{_id:{"state":"$state"}}, sum:{$sum:"$pop"}}])
更改为:
db.US.aggregate([{$group:{_id:{"state":"$state"}, sum:{$sum:"$pop"}}}])
编辑:实际上这更好:
db.US.aggregate([
{$group:{_id:"$state", sum:{$sum:"$pop"}}}
])
因为它会生成一个平面文档而不是一组id:
{ "_id" : "MA", "sum" : 36963 }