我有一个名为Students的系列
文档的字段house
包含字符串值,例如:
'Gryffindor'
,'Hufflepuff'
,'Ravenclaw'
,'Slytherin'
我正在显示每个房子里的学生人数。
为此,我正在做这样的事情:
G = Students.find({ house: 'Gryffindor' }).count();
H = Students.find({ house: 'Hufflepuff' }).count();
R = Students.find({ house: 'Ravenclaw' }).count();
S = Students.find({ house: 'Slytherin' }).count();
并显示。
有没有办法可以在一个查询中完成?
答案 0 :(得分:3)
您可以使用mongo aggregation在单个查询中执行此操作。
Students.aggregate([
{
$group : {
_id : "$house",
count: { $sum: 1 }
}
}
])
答案 1 :(得分:0)
如果你已经在本地获得了所有数据,你可以使用聚合来做到这一点,使用mongo(如Volodymyr指出)或下划线/ lodash&#39s的countBy方法。
在服务器中它始终有效,因为所有数据始终存在,但为了使其在客户端上工作(显示实际计数),您应该发布所有用户,这可能不是最佳实践,甚至大型应用程序也不可能。
在这种情况下,您应该使用一种方法(将返回非反应计数),创建单独的计数集合并使其保持最新,甚至使用低级别流星发布API来发布反应计数