为什么我的mongodb调用这么慢?

好的,所以我正在构build一个基于Node.js的应用程序,我正在使用mongoose来处理我与mongodb的连接。 我有一个端点是这样的:

getTestStream : function(req, res, conditions, callback) { Activity.find() .limit(1000) .run(function(err, activities) { if (err){ util.sendError(req, res, "Query Error", err); } else if (activities) { res.send(activities); } else { util.send('nope'); } }); } 

由于某种原因,这个电话需要700ms +才能完成。 即使不使用由mongodb shell制作的限制,同样的调用在大约4ms内返回。 这似乎是这样一个简单的查询,所以它是如此缓慢呢? 我猜我已经错过了一些明显的configuration,但我不知道。

感谢任何可以帮助的人。

其他信息:

 mongoose@2.6.0 mongodb@2.0.4 node@0.6.9 

经过一段时间的实验后,我发现了一些缓慢的贡献,希望这有助于任何人有类似的问题:

  • 我要求的对象很大,所以处理它们需要一些时间。 对于大对象修改查询只返回你现在需要的字段。
  • mongoose是有用的,但它可以真正放慢,当你要求很多项目,它更好的只是直接接口与节点mongodb本地如果你想要一个电话的速度。 (这是我的scheme速度提高了50%左右)

使用这些技术,我现在可以在比以前处理1000次更less的时间内处理4000条logging。 感谢所有评论过的人,特别感谢盖茨副总裁指出,mongoose不适合这种呼叫。

即使不使用由mongodb shell制作的限制,同样的调用在大约4ms内返回。

默认情况下,shell的限制是30个左右。 尝试从实际的限制壳?

另外,您可能想要从Shell中尝试.explain()

如果这些都不起作用,那么你可以采取@凯尔银行家的build议,并检查了分析器 。

checkout ensureIndex这将加快您的search