返回包含内部集合计数的文档的最佳方法是什么?

时间:2014-10-08 22:20:43

标签: mongodb

假设我有一个包含以下文档的集合:

{
   title: "First",
   sub_items: ['test', 'another test', 'whatever]
},
{
   title: "Second",
   sub_items: ['something', 'something else']
}

我想获得如下输出:

{"First", 3},
{"Second, 2}

最好的方法是什么?我使用map函数实现了它,如下所示:

db.coll.find().map(
   function(item)
   {
      return {title: item.title, count: item.sub_items.length};
   }
);

在尝试获得上述结果时,我是否会从性能角度更好地尝试使用aggregatemapReduce之类的内容?

1 个答案:

答案 0 :(得分:2)

如果您使用 MongoDB 2.6或更高版本,则可以使用$size聚合运算符来获得接近您想要的结果。来自$size的文档:

  

计算并返回数组中项目总数。

以下是未经测试的示例:

db.coll.aggregate([
    {"$project" : {"title" : 1, "count" : {"$size":"$sub_items"}}}
])