假设我最近有1000个db.collection.find()查询,而这些查询都是相同的。
但是这些查询是由不同的1000个用户进行的,因此MongoDB具有不同的1000个查询。
所以我的问题是MongoDB将处理每个查询个体,或者MongoDB将利用预处理的查询结果。
答案 0 :(得分:2)
所以我的问题是MongoDB是否要处理每个查询?
是的。每个查询都被执行。您可以在mongostat
中进行验证MongoDB将利用预处理的查询结果
MongoDB会将经常使用的数据和索引添加到内存中的working set
它还将为您的查询缓存最有效的计划,如其query planner doc.
中所述答案 1 :(得分:1)
服务器端(documentation)上有文档缓存,因此您的I / O系统不太可能每次都被一遍又一遍地击中。此外,查询计划也会被缓存(documentation)。也就是说,结果将不会被缓存,这在文档(第一个链接)中也有说明:
MongoDB不会缓存查询结果以返回相同查询的缓存结果。