2
我有一个集合'匹配'内有727000个文档。它里面有6个字段,没有数组只是简单的整数和对象ID。我正在查询收集如下:Mongodb toArray()性能
matches.find({
$or: [{
homeTeamId: getObjectId(teamId)
}, {
awayTeamId: getObjectId(teamId)
}
],
season: season,
seasonDate: {
'$gt': dayMin,
'$lt': dayMax
}
}).sort({
seasonDate: 1
}).toArray(function (e, res) {
callback(res);
});
结果只返回大约7-8个文件。 查询需要约100ms,我认为这是相当合理的,但主要问题是,当我调用方法toArray()时,它增加了约〜600ms! 我正在我的笔记本电脑上运行服务器,Intel Core I5,6GB RAM,但我无法相信它会为7-8文档添加600ms。 尝试使用mongodb本机驱动程序,现在切换到mongoskin,并获得同样缓慢的结果。 有什么建议吗?
是什么'回调()'做什么? – bdesham 2013-04-08 21:28:16
它从函数返回数据。我在函数exports.getPrevNextMatches = function(teamId,callback){}中封装了这个查询。但是当我做同样没有toArray()方法时,要返回结果的游标,它需要提到〜100毫秒。 toArray()方法增加〜600ms – Dove 2013-04-08 21:31:34
你是否在'find'结果而不是'toArray'上尝试'forEach'?我怀疑这会有所帮助,但这是一件容易的事情。另外,'explain'给你的查询是什么? – WiredPrairie 2013-04-09 00:32:25