Mongodb Mongo-如何在不执行查询的情况下解释查询

Mongodb Mongo-如何在不执行查询的情况下解释查询,mongodb,explain,Mongodb,Explain,我是Mongo的新手,已经搜索过了,但没有找到具体的答案 我知道该公司将与可能的访问计划并行执行查询,并根据执行时间选择获胜计划 《最佳实践指南》指出“可以计算并返回查询计划,而无需首先运行查询”我在文档中找不到如何执行此操作。 那么,如果即使是获胜的计划在返回一个小的结果集(例如,对一个大集合进行排序)之前也需要很长时间才能执行,那该怎么办呢 我看到过旧的评论,在返回第一批101个文档后,执行就会停止,但在官方文档中也找不到 因此,我的问题是:如何在不执行查询的情况下获取访问计划? 谢谢你的帮

我是Mongo的新手,已经搜索过了,但没有找到具体的答案

我知道该公司将与可能的访问计划并行执行查询,并根据执行时间选择获胜计划

《最佳实践指南》指出“可以计算并返回查询计划,而无需首先运行查询”我在文档中找不到如何执行此操作。

那么,如果即使是获胜的计划在返回一个小的结果集(例如,对一个大集合进行排序)之前也需要很长时间才能执行,那该怎么办呢

我看到过旧的评论,在返回第一批101个文档后,执行就会停止,但在官方文档中也找不到

因此,我的问题是:如何在不执行查询的情况下获取访问计划?


谢谢你的帮助。我使用的是Mongo3.4

您可以设置
explain()
函数的详细程度。默认情况下,它使用
queryPlanner
,这就是(如果我是对的话)您要查找的内容


检查

中的其他模式。您可以设置
explain()
函数的详细程度。默认情况下,它使用
queryPlanner
,这就是(如果我是对的话)您要查找的内容

通过运行一个查询的有限子集来检查MongoDB构建中的其他模式,然后缓存获胜的计划,以便可以重复使用(直到有东西导致缓存刷新)

因此,“有限子集”意味着它将获得与100个文档匹配的文档作为“样本”,不再进一步,而是文档的含义

可以计算并返回查询计划,而无需首先 运行查询

在运行完整查询之前,您可以进行解释。这是一个很好的实践,因为它会提前为您填充该计划缓存

简单地说,如果MongoDB注意到另一个查询比一个完成的查询花费的时间更长,它将停止执行并放弃该计划,转而使用更高效的计划。例如,您可以通过运行allPlansExecution解释在colscan上选择索引的位置来看到这一点。

MongoDB通过运行查询的有限子集进行构建,然后缓存获胜的计划以便可以重复使用(直到某个原因导致缓存刷新)

因此,“有限子集”意味着它将获得与100个文档匹配的文档作为“样本”,不再进一步,而是文档的含义

可以计算并返回查询计划,而无需首先 运行查询

在运行完整查询之前,您可以进行解释。这是一个很好的实践,因为它会提前为您填充该计划缓存


简单地说,如果MongoDB注意到另一个查询比一个完成的查询花费的时间更长,它将停止执行并放弃该计划,转而使用更高效的计划。例如,通过运行allPlansExecution解释在colscan上选择索引的位置,您可以看到这一点。

谢谢。我阅读了queryPlanner文档,但不清楚,因为它声明它不返回执行结果,但这并不明确意味着查询没有执行,只是结果没有返回。我相信你是对的,谢谢。我阅读了queryPlanner文档,但不清楚,因为它声明它不返回执行结果,但这并不明确意味着查询没有执行,只是结果没有返回。我相信你是对的。