MongoDB聚合管道中的$ geoNear查询是否限制文档数量?

时间:2016-06-03 14:06:11

标签: mongodb geospatial database

我正在运行 geoNear 查询作为MongoDB聚合管道的一部分,我似乎无法将maxDistance设置得足够大,以便返回所有结果。

我有大约30000个文档的集合,所有文档都具有有效的地理位置(格式为[lng , lat]),而且最多只能获得大约9或1万个文档。

当我在mongo shell中运行以下查询时,我得到的计数约为9000:

 db.myCollection.aggregate(
  [{"$geoNear": {"near" : {"type" : "Point", 
                           "coordinates": [-0.1, 50.5]},
                 "distanceField": "data.distance", 
                 "spherical": true, 
                 "maxDistance":100000000
                 "limit":100000}}],    
   {"cursor": {"batchSize": 100000000}}).itcount()  // => ~9000

注意,我已将 maxDistance 设置为大于地球的周长(我使用GeoJSON Point so maxDistance is in meters)。我还确保限制 batchSize 都大于我的集合中的文档数量。

当作为 find 查询运行时,我得到集合中完整文档数的计数。即。

 db.myCollection.find({"data.location": 
                               {$near: {$geometry: {type: "Point",                               
                                                    coordinates: [-0.1, 50.5]}, 
                                        $maxDistance: 100000000}}}).count() // => ~30000

我还注意到,当更改坐标的值进行搜索时,尽管指定了一个应包含所有内容的maxDistance,但我会收到不同数量的文档。

我已经使用MongoDB的3.2.6和3.0.11版本重现了这种行为。

我不知道聚合查询的maxDistance值是否有上限?或者还有其他限制返回文件数量的东西?我还没有找到任何这些方案的文档。

0 个答案:

没有答案