Mongodb 数量级极限(37)与近球极限(38)

Mongodb 数量级极限(37)与近球极限(38),mongodb,Mongodb,以下是对我的限额(37)查询的查询和解释: 以下是我的限额(38)查询的查询和说明: 极限(37)查询大约需要20毫秒。极限(38)查询大约需要150毫秒 任何帮助解释我可能做错了什么或没有做错什么都会非常有帮助 当您请求按距离顺序(从最近到最远)排序的结果时,考虑到MongoDB地理空间操作符的工作方式,预期会出现这种行为。为了避免对整个集合进行排序,$geoNear或$nearSphere运算符以距离间隔迭代扩展搜索区域 限制为37时,匹配结果恰好在单个inputStage中找到(从解释

以下是对我的限额(37)查询的查询和解释:

以下是我的限额(38)查询的查询和说明:

极限(37)查询大约需要20毫秒。极限(38)查询大约需要150毫秒


任何帮助解释我可能做错了什么或没有做错什么都会非常有帮助

当您请求按距离顺序(从最近到最远)排序的结果时,考虑到MongoDB地理空间操作符的工作方式,预期会出现这种行为。为了避免对整个集合进行排序,
$geoNear
$nearSphere
运算符以距离间隔迭代扩展搜索区域

限制为37时,匹配结果恰好在单个inputStage中找到(从解释输出中可以看到)。限制为38需要扩展搜索区域,因此您会注意到第一个inputStage与限制(37)解释中的相同,第二个inputStage带有额外的比较

根据数据集的密度,与MongoDB 3.0中返回的文档数量相比,扫描的索引键数量可能过高

比较一些限制(37)执行统计数据:

"executionStats" : {
    "nReturned" : 37,
    "executionTimeMillis" : 24,
    "totalKeysExamined" : 560,
    "totalDocsExamined" : 299,
}
"executionStats" : {
    "nReturned" : 38,
    "executionTimeMillis" : 148,
    "totalKeysExamined" : 1629,
    "totalDocsExamined" : 1084,
}
具有限制(38)执行统计信息:

"executionStats" : {
    "nReturned" : 37,
    "executionTimeMillis" : 24,
    "totalKeysExamined" : 560,
    "totalDocsExamined" : 299,
}
"executionStats" : {
    "nReturned" : 38,
    "executionTimeMillis" : 148,
    "totalKeysExamined" : 1629,
    "totalDocsExamined" : 1084,
}
。。。limit(38)的总体执行时间更长,因为扩展的搜索区域需要大约三倍于键和文档比较的数量


有关该算法工作原理的更多信息(以及MongoDB 3.2中的一些重大改进),请参阅:。

感谢您提供的信息:)