【发布时间】:2015-01-14 08:46:33
【问题描述】:
我对 mongo 很陌生,并试图在查询之后开始工作。并且工作正常,但它需要更多时间。我觉得我做错了什么。
集合parent 中有很多文档,接近6000 个。每个文档都有一定数量的childs(childs 是另一个集合,其中包含40000 个文档)。 parents & childs 通过文档中称为parent_id 的属性相互关联。请看下面的代码。以下代码大约需要 1 分钟来执行查询。我不认为 mongo 应该花那么多时间。
function getChildMaxDocCount(){
var maxLen = 0;
var bigSizeParent = null;
db.parents.find().forEach(function (parent){
var currentcount = db.childs.count({parent_id:parent._id});
if(currcount > maxLen){
maxLen = currcount;
bigSizeParent = parent._id;
}
});
printjson({"maxLen":maxLen, "bigSizeParent":bigSizeParent });
}
是否有任何可行/最佳的方法来实现这一目标?
【问题讨论】:
-
你在开玩笑吗?您在一分钟内对 40k 文档进行 6k 查询,甚至进行一些处理?让我们做一些数学运算:60s/6000 = 0.01s 或 10ms 每个查询。你称之为慢?假设您很可能甚至没有适当的索引集,我认为这令人印象深刻。
标签: mongodb query-optimization