Mongodb Mongo 3.0,地理空间数据和计算距离

Mongodb Mongo 3.0,地理空间数据和计算距离,mongodb,geospatial,Mongodb,Geospatial,目前,我又花了一个小时试图找出我的查询出了什么问题 使用Mongo版本3.0,我检查了两个点,它们不超过17000米。不幸的是,当我试图用18000米的距离从db获取它们时,我什么也没有得到 我尝试了“2dsphere”和/或“2d”索引: 或 然后我与: db.location.find( { position: { $near: [ 40.705395, -73.891104 ], $maxDistance: 18000 } } ) 或 以及: db.location.fi

目前,我又花了一个小时试图找出我的查询出了什么问题

使用Mongo版本3.0,我检查了两个点,它们不超过17000米。不幸的是,当我试图用18000米的距离从db获取它们时,我什么也没有得到

我尝试了“2dsphere”和/或“2d”索引:

然后我与:

    db.location.find( {
   position: { $near: [ 40.705395, -73.891104 ],  $maxDistance: 18000 }
} )

以及:

db.location.find(    { location : { $near : [ 40.705395, -73.891104 ], $maxDistance: 18000 } } )
我有:

Error: error: {
    "$err" : "Unable to execute query: error processing query: ns=distance.location limit=0 skip=0\nTree: GEONEAR  field=location maxdist=18000 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query",
    "code" : 17007
}
示例文件:

> db.location.find()
{ "_id" : ObjectId("5504ba8a97b3b27d56dc4045"), "id" : 123, "position" : [ 40.705562, -73.898818 ] }
坦率地说,我找不到我的问题所在。数据库所做的计算似乎是错误的,但我宁愿说我犯了某种错误

您是否遇到过类似的情况?

您需要在您的集合上创建一个数据库,以便执行地理空间查询

db.location.ensureIndex({position:"2dsphere"});

另外,我注意到您将坐标存储为[40.705562,-73.898818]。在MongoDB中,坐标轴的顺序是[经度,纬度],根据它你的坐标位于南极洲的某个地方。你需要像[-73.898818,40.705562]那样存储坐标(除非你真的要存储来自南极洲的位置)。

你能用位置数据发布一个示例文档吗?@ZeMoon:我刚刚在上面添加了“示例文档”谢谢。我不知道为什么我从来没有也没有注意到轴心国的秩序。现在一切似乎都好了。
Error: error: {
    "$err" : "Unable to execute query: error processing query: ns=distance.location limit=0 skip=0\nTree: GEONEAR  field=location maxdist=18000 isNearSphere=0\nSort: {}\nProj: {}\n planner returned error: unable to find index for $geoNear query",
    "code" : 17007
}
> db.location.find()
{ "_id" : ObjectId("5504ba8a97b3b27d56dc4045"), "id" : 123, "position" : [ 40.705562, -73.898818 ] }
db.location.ensureIndex({position:"2dsphere"});