【发布时间】:2019-04-21 11:59:44
【问题描述】:
我试图通过创建数百个使用相同查询来查询 MongoDB 的 Promise 来模拟真实的用例(虽然不是真实的,因为实际的查询会同时不同),然后运行 Promise.all。我注意到 2 个有趣的行为:
- 第一次返回可能比最后一次返回快得多(通常是最后一次返回时间的两倍)。对于这个,MongoDB 是否会锁定集合,所以查询必须在队列中等待?
- 如果我将返回大小从大约 40 个字段减少到 1 个字段,查询运行速度会快 10 倍。
谁能解释这两种行为?谢谢。
【问题讨论】:
-
您针对哪个集合(索引、结构)运行哪些查询?
-
@JonasWilms 所有查询的字段都被索引并且没有嵌套。但是,文档有一些嵌套字段。所有查询条件要么相等要么
$in,我可以在说明中看到使用了索引。
标签: javascript mongodb performance concurrency request