如果我想弄清楚“约翰”付了多少钱,以及有多少人在此数据列表中购买了10美元产品
数据列表:
[
{
"name": "john",
"payment": 10
},
{
"name": "john",
"payment": 25
},
{
"name": "michel",
"payment": 10
}
]
我应该提出两个请求吗?或者有什么方法可以立刻得到这个吗?
答案 0 :(得分:0)
我相信你必须使用2个单独的查询来实现
查询1
db.p.aggregate(
{
"$match" : {"name":"john"}
},
{
"$group" :
{
"_id" : "$name",
"total" : {"$sum" : "$payment"}
}
}).result
查询2:
db.p.count({"payment":10})
答案 1 :(得分:0)
尝试此操作以查找每个人支付的费用
db.collection.aggregate(
{
"$group": {"_id": "$name" , "total": {"$sum": "$payment"}}
}
)
您可以添加匹配子句以查找特定用户支付的费用
{
"$match": {"name": "John" }
}
这是为了找到所有支付相同金额的人
db.collection.aggregate(
{
"$group": {"_id": "$payment" , "people": {"$addToSet": "$name"}}
}
)
同样,您也可以在此处添加匹配条款,以查找谁支付了特定的amo0unt。如果您只需要计数,则使用db.collection.count()而不是聚合