我有一个'匹配'的集合里面有727000个文件。它里面有6个字段,没有数组只是简单的整数和对象ID。我正在按如下方式对集合进行查询:
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个文件。 查询需要大约100毫秒,我认为这是非常合理的,但主要的问题是,当我调用方法toArray()时,它增加了大约600毫秒!! 我正在我的笔记本电脑上运行服务器,英特尔酷睿i5,6GB内存,但我不敢相信它为7-8文件增加了600毫秒。 尝试使用mongodb本机驱动程序,现在切换到mongoskin,并获得相同的缓慢结果。 有什么建议吗?
答案 0 :(得分:2)
toArray()方法迭代抛出所有游标元素并将它们加载到内存中,这是一个成本很高的操作。也许你可以添加索引来提高你的查询性能,和/或避免toArray迭代自己抛出Cursor。
此致 Moacy