我正在学习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上。
答案 0 :(得分:1)
您可以尝试以下汇总
totalAmount
不是聚合管道阶段。在mongodb管道阶段中,只有在aggregation pipeline中可以使用某些运算符。而且您还需要使用$group
阶段以使用$sum
累加器获得所有相似的custId
的总和。
db.emp.aggregate([
{ "$match": { "status": "A" }},
{ "$group": {
"_id": "$custID",
"Amount": { "$sum": "$Amount" }
}}
])