Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有两种组计数的mongoDB聚合_Mongodb_Aggregation Framework - Fatal编程技术网

具有两种组计数的mongoDB聚合

具有两种组计数的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.

如果我想知道john在这个数据列表中花了多少钱,有多少人买了10美元的产品

数据列表:

[
{
 "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"}}
  }
)