我有一个包含大约6k篇文档的集合,其中位置字段上拥有一个2dsphere索引,例如下面:
"location" : {
"type" : "Point",
"coordinates" : [
138.576187,
-35.010441
]
}
当使用下面的查询时,我只能得到约450个文档,nscanned大约为3k。每个文档都有一个位置,许多位置是重复的。从GeoJSON返回的距离单位是米,距离乘数为0.000625将距离转换为英里。为了测试,我期望最大距离为32180000000000,以返回地球上的所有文档,即6000。
db.x.aggregate([
{"$geoNear":{
"near":{
"type":"Point",
"coordinates":[-0.3658702,51.45686]
},
"distanceField":"distance",
"limit":100000,
"distanceMultiplier":0.000625,
"maxDistance":32180000000000,
"spherical":true,
}}
为什么我没有返回6000个文档?我无法理解Mongo这种行为背后的逻辑。我在Mongo论坛上发现了以下信息:"geoNear命令的主要限制是,它可以返回最大文档大小的结果集,因为所有匹配的文档都会在单个结果文档中返回。"