我有一个"机器"与文件
{ "_id" : "ac9d1db9-6a0d-47c6-97d3-a613c8dd0031", "pin" : { "machine":"test1", "position" : [ -1.5716, 54.7732 ] } } Note: -1.5716 is lng and 54.7732 is lat
我在文档
上创建了一个2dsphere索引db.machine.createIndex( { 'pin.position' : "2dsphere" } )
我尝试使用2个不同版本的查询(查询中只有差异是geoNear管道阶段的近场)
查询1:
db.machine.aggregate( [ { "$geoNear":{ "near": [-0.2129092,51.5031594], "limit":100, "maxDistance":500*1000, "distanceField": "dist.calculated", "includeLocs": "dist.location", "distanceMultiplier":1/1000, "spherical": true } } ] ) Note: -0.2129092 is lng and 51.5031594 is lat
查询2
db.machine.aggregate( [ { "$geoNear":{ "near": { type: "Point", coordinates: [-0.2129092,51.5031594] }, "limit":100, "maxDistance":500*1000, "distanceField": "dist.calculated", "includeLocs": "dist.location", "distanceMultiplier":1/1000, "spherical": true } } ] ) Note: -0.2129092 is lng and 51.5031594 is lat
查询1将文档返回给我,并提供此文档为5.88161133560063e-05 Kms远离搜索坐标
查询2将文档返回给我,并提供此文档距搜索坐标375.135052595944 Kms
我在网站http://andrew.hedges.name/experiments/haversine/上交叉验证这些lng / lat之间的距离,并看到文档与搜索坐标之间的距离约为374.835 Kms
似乎查询2提供了正确的结果,但我不确定查询1和查询2之间的区别是什么以及我是否正确使用它。
请告知
答案 0 :(得分:0)
查询1提供传统坐标对中的距离,查询2提供以米为单位的距离(GeoJSON),因此两个查询都使用不同的单位
请检查以下链接https://jira.mongodb.org/browse/SERVER-16652?jql=text%20~%20%22geoNear%22