获取子类别中的项目数

时间:2015-03-06 08:51:55

标签: mongodb

有一个类别树,例如

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 ......

任何想法?

1 个答案:

答案 0 :(得分:0)

为了计算按类别分组的生物,您需要首先展开类别字段然后分组。

执行此操作的查询如下所示:

db.beings.aggregate(
  [
    { $unwind : '$categories' },
    { $group  : 
      { 
        _id:'$categories' , 
        count: { $sum : 1 } 
      } 
    }
  ]
);