有一个类别树,例如
Mammalia-Rodentia...,
...,
Mammalia-Primates-Hominidae...,
Mammalia-Primates-Lemuridae...,
...
etc.
有一组分类生物。
给出一个类别(例如哺乳动物或灵长类动物)如何计算每个子类别中的生物数量:
{ Primates: 1098, Rodentia: 8932 }
或
{ Lemuridae: 129, Hominidae: 432 }
我试图像这样模仿Beings:
{
name: "being #1",
categories: [...,'Lemuridae', 'Primates', 'Mammalia']
}
汇总例如灵长类动物{$ match:{categories:' Primates'}} 然后我需要$项目之前的一个类别'灵长类动物'看起来这在聚合框架中是不可能的......因此模型不正确或者我必须使用mapreduce ......
任何想法?
答案 0 :(得分:0)
为了计算按类别分组的生物,您需要首先展开类别字段然后分组。
执行此操作的查询如下所示:
db.beings.aggregate(
[
{ $unwind : '$categories' },
{ $group :
{
_id:'$categories' ,
count: { $sum : 1 }
}
}
]
);