mongodb - 如何仅在一个查询中获取对一个集合的多个查询的计数?

标签 mongodb meteor mongodb-query aggregation-framework

我有一个名为 Students 的集合。
文档有一个 house 字段,其中包含一个字符串值,例如:
“格兰芬多”“赫奇帕奇”“拉文克劳”“斯莱特林”

我正在显示每个学院的学生人数。

为此我正在做这样的事情:

G = Students.find({ house: 'Gryffindor' }).count();
H = Students.find({ house: 'Hufflepuff' }).count();
R = Students.find({ house: 'Ravenclaw' }).count();
S = Students.find({ house: 'Slytherin' }).count();

和显示。

有没有一种方法可以在单个查询中完成?

最佳答案

您可以使用 mongo aggregation 在单个查询中完成此操作.

Students.aggregate([
    { 
        $group : {
            _id : "$house",
            count: { $sum: 1 }
        }
    }
])

关于mongodb - 如何仅在一个查询中获取对一个集合的多个查询的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34309088/

相关文章:

java - 通过JAVA获取mongodb中的currentdate

meteor - 如何向 Meteor.users 集合添加字段

mongodb - 聚合查询的 Mongo 性能极慢

mongodb - 获取数组中第一个元素的最大值?

mongodb - 如何在 MongoDB 中获取以字段开头字母(A 到 Z)的随机文档?

arrays - 仅在数组的第一个元素具有特定字段值的情况下进行 Mongo 匹配

node.js - 服务器上的事件连接数达到最大值

node.js - 如何使用 Formidable 将文件上传直接流式传输到 Mongo 的 GridFS?

meteor - Fabric.js : Use SVG as a pattern & adjust fill of SVG pattern

meteor - 如何使用 meteor 帐户和自动生成添加/编辑用户