【发布时间】:2012-12-28 06:23:32
【问题描述】:
我有以下结构的文档:
{
"name" : "John",
"items" : [
{"key1" : "value1"},
{"key1" : "value1"}
]
}
并构建了一个简单的函数来计算“项目”总数。
var count = 0;
db.collection.find({},{items:1}).limit(10000).forEach(
function (doc) {
if(doc.items){
count += doc.items.length;
}
}
)
print(count);
但是在大约 100 万个项目之后,我的函数中断了,Mongo 退出了。我已经查看了新的聚合框架以及 mapreduce 函数,但我不确定哪个最适合用于这样的简单计数。
欢迎提出建议!谢谢。
【问题讨论】:
-
你正在得到一个游标超时prolly,如果你要运行说10K,就像你在循环中显示的那样,它应该每次打开一个新游标,所以你不应该遭受超时问题。
标签: mongodb mapreduce aggregation-framework mongo-shell