“ errmsg”:“无法识别的管道阶段名称:'totalAmount'”

时间:2018-10-09 11:26:10

标签: mongodb aggregation-framework

我正在学习MongoDB,并尝试实现与聚合相关的命令。

该集合如下所示:

{ "_id" : ObjectId("5bbc185f132cf4170a2f5fd3"), "custID" : "A123", "Amount" : 500, "status" : "A" }
{ "_id" : ObjectId("5bbc187d132cf4170a2f5fd4"), "custID" : "A123", "Amount" : 250, "status" : "A" }
{ "_id" : ObjectId("5bbc188d132cf4170a2f5fd5"), "custID" : "B212", "Amount" : 200, "status" : "A" }

第一个查询是Find out total amount for individual customer ID having status ‘A’

为此,我对此进行了编码:

db.emp.aggregate([{$match:{'status':'A'}},{'totalAmount':{$sum:'$Amount'}}])

但是出现此错误:

"errmsg" : "Unrecognized pipeline stage name: 'totalAmount'"

我要去哪里错了?

此外,我知道以后我会遇到很多错误和疑问。有没有什么好的平台可以问这样的问题,而不是放在SO上。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下汇总

totalAmount不是聚合管道阶段。在mongodb管道阶段中,只有在aggregation pipeline中可以使用某些运算符。而且您还需要使用$group  阶段以使用$sum累加器获得所有相似的custId的总和。

db.emp.aggregate([
  { "$match": { "status": "A" }},
  { "$group": {
    "_id": "$custID",
    "Amount": { "$sum": "$Amount" }
  }}
])