将两个MongoDB聚合合并成一个pipe道

我有一个人口普查的集合,我仍然不支配“聚合”function,只有一个查询结果。

该集合具有这种格式 (加上ISO 8601时间戳)。 这样,每次进行普查时,我们都可以注册当前的年龄和计数(可以添加/修改/删除以前的年龄)。

现在我有两个“聚合”查询返回这个 :

  1. 获取数据库中所有registry的AVG,MAX,MIN。
  2. 得到每个年龄,并显示与这个年龄的人(“总和”)。

但是,我只需要一个“聚合”查询就可以得到这些结果,但是对于我来说pipe道是有点困难的,我不能得到统计数据,然后“放松”人口以获得总和。

任何帮助如何合并这两个查询,请? 谢谢大家!

尝试下面的聚合pipe道,它应该给你两个查询的结果:

db.collection('population').aggregate([ { "$unwind": "$population" }, { "$group": { "_id": 0, "doc": { "$push": "$$ROOT" }, "average_age": { "$avg": "$population.age" }, "max_age": { "$max": "$population.age" }, "min_age": { "$min": "$population.age" }, "average_population": { "$avg": "$population.count" }, "max_population": { "$max": "$population.count" }, "min_population": { "$min": "$population.count" } } }, { "$unwind": "$doc" }, { "$group": { "_id": "$doc.population.age", "sum": { "$sum": "$doc.population.count" }, "average_age": { "$first": "$average_age"}, "max_age": { "$first": "$max_age"}, "min_age": { "$first": "$min_age"}, "average_population": { "$first": "$average_population"}, "max_population": { "$first": "$max_population"}, "min_population": { "$first": "$min_population"} } } ])