首页 文章

mongodb min / maxDistance on near命令

提问于
浏览
0

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

我正在使用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 });
  • 何时设置minDistace将输出0结果,我输入的数字无关紧要 . 同样在统计数据中是nscanned 1,这是错误的,应该是299,这是索引中的文档数量 .

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

这是我的索引:

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

我正在使用DoctrineODM和mongodb 3.2.6

1 回答

  • 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以米为单位工作 .

相关问题