我有一个“matches”集合,里面有727000个文档。它有6个字段,没有数组,只有简单的整数和对象Ids。我正在对集合进行查询,如下:
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!!我在我的笔记本电脑上运行服务器,英特尔酷睿I5,6 6GB内存,但我不敢相信它为7-8个文档增加了600ms。尝试使用mongodb原生驱动程序,现在切换到mongoskin,仍然获得相同的缓慢结果。有什么建议吗?
发布于 2013-05-02 01:50:00
toArray()方法迭代抛出所有游标元素并将它们加载到内存中,这是一个高成本操作。也许你可以添加索引来提高你的查询性能,和/或避免toArray迭代自己抛出游标。
致敬,莫西
https://stackoverflow.com/questions/15889242
复制相似问题