MongoDB聚合数组项

时间:2012-09-30 22:56:56

标签: mongodb mapreduce

鉴于以下显示的架构& MongoDB shell版本:2.0.4:

我如何计算展示数组中的项目数?

我想我必须做一个Map Reduce,这看起来有点复杂,我认为count函数会这样做。
有人可以证明这一点吗?

Mongo Schema

1 个答案:

答案 0 :(得分:1)

一个简单的计数示例是:

var count = 0;
db.engagement.find({company_name: "me"},{impressions:1}).forEach(
    function (doc) {
        count += doc.impressions.length;
    }
)
print("Impressions: " + count);

如果要处理大量文档,最好将计数保留为显式字段。您可以在推送到展示数组时更新计数,也可以根据需要使用incremental MapReduce重新计算更新的文档。