mongodb min / maxDistance on near命令

时间:2016-06-27 11:12:36

标签: mongodb

在集合上使用近查询时遇到了几个问题。

我正在使用2dsphere索引,并希望靠近地点和分页。 我注意到的第一件事是偏移不在附近。所以这应该很容易用min / maxDistance模拟

但我无法弄清楚如何使工作查询minDistance,而maxDistance似乎无效。

以下是我正在使用的命令:

db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137, "minDistance": 60 });
db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137 });
db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137, "maxDistance": 60 });
  1. 设置minDistace时会输出0结果,输入的数字并不重要。同样在统计数据中是nscanned 1,这是错误的,应该是299,这是索引中的文档数。

  2. 和3.将输出100个完全相同的结果(当序列化实体很大时这也是问题而且我不需要的100个结果很慢)并且nscanned是299。

  3. 这是我的索引:

    { 
        "v" : 1, 
        "name" : "coordinates_2dsphere", 
        "ns" : "mydb.Place", 
        "sparse" : false, 
        "2dsphereIndexVersion" : 3
    }
    

    我正在使用DoctrineODM和mongodb 3.2.6

1 个答案:

答案 0 :(得分:0)

发现此查询仅在使用GeoJson点时有效。

文档说不然:( https://docs.mongodb.com/manual/reference/operator/query/near/#op._S_near

这是工作命令:

db.Place.runCommand({ "geoNear": "Place", "near": { "type": "Point", "coordinates": [ 49, 14 ] }, "spherical": true, "query": [ ], "distanceMultiplier": 0.001, "maxDistance": 70000, "minDistance": 10000 });

唯一的区别是GeoJson以米为单位工作。