Mongodb toArray()表现

时间:2013-04-08 21:21:56

标签: node.js mongodb nosql

我有一个'匹配'的集合里面有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,并获得相同的缓慢结果。 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

toArray()方法迭代抛出所有游标元素并将它们加载到内存中,这是一个成本很高的操作。也许你可以添加索引来提高你的查询性能,和/或避免toArray迭代自己抛出Cursor。

此致 Moacy