具有两种组计数的mongoDB聚合
如果我想知道john在这个数据列表中花了多少钱,有多少人买了10美元的产品 数据列表:具有两种组计数的mongoDB聚合,mongodb,aggregation-framework,Mongodb,Aggregation Framework,如果我想知道john在这个数据列表中花了多少钱,有多少人买了10美元的产品 数据列表: [ { "name": "john", "payment": 10 }, { "name": "john", "payment": 25 }, { "name": "michel", "payment": 10 } ] 我应该提出两个要求吗?或者有什么方法可以一次得到这个吗?我相信你必须使用两个单独的查询来实现这一点 问题1 问题2: 试试这个,看看每个人付了多少钱 db.collection.
[
{
"name": "john",
"payment": 10
},
{
"name": "john",
"payment": 25
},
{
"name": "michel",
"payment": 10
}
]
我应该提出两个要求吗?或者有什么方法可以一次得到这个吗?我相信你必须使用两个单独的查询来实现这一点 问题1 问题2:
试试这个,看看每个人付了多少钱
db.collection.aggregate(
{
"$group": {"_id": "$name" , "total": {"$sum": "$payment"}}
}
)
您可以添加match子句来查找特定用户支付的金额
{
"$match": {"name": "John" }
}
这是为了找出谁付了同样的钱
db.collection.aggregate(
{
"$group": {"_id": "$payment" , "people": {"$addToSet": "$name"}}
}
)
同样,您也可以在此处添加匹配子句,以查找所有支付特定金额的人。如果您只需要计数,请使用db.collection.count而不是aggregate@Styvane是的,我将进行编辑。这是两个完全不同的聚合查询,因此您应该提出两个请求。谢谢。但是我正在寻找只使用一个查询的方法。我找不到那种方法。但我只是希望。。有人知道:对不起。我觉得我的问题太简单了。我正在使用组聚合来提取每日计数和。在这种情况下,我需要进行两种计数。
{
"$match": {"name": "John" }
}
db.collection.aggregate(
{
"$group": {"_id": "$payment" , "people": {"$addToSet": "$name"}}
}
)