我很难找到最接近一组纬度/经度的物品。
我的对象的lat / lon存储如下:
"address": "some_address",
"city": "some_city",
"coordinates": [
32.214048,
-84.361727
]
这是我目前使用的查询,当我使用它时,我没有得到任何结果,甚至没有空数组。
collection.find({coordinates: {$near: [40.296898, -111.694647] }, $maxDistance:100})
如何查询我的对象以找到最接近的对象?
答案 0 :(得分:6)
你必须做三件事。
您必须以[经度,纬度]顺序保存坐标。正如您在docs中看到的那样,mongo需要这样做。因此,您的数据必须类似于
{ "地址":" some_address", " city":" some_city", "坐标":[ -84.361727, 32.214048 ] }
正确设置数据后,您必须创建 2dsphere 索引才能使用geoNear。
db.collection.createIndex({coordinates:" 2dsphere"})
然后您必须修复您的查询。这里需要传递一个带有几何属性的$ nearSphere,这是你按照我们之前所说的顺序放置坐标[经度,纬度]
db.collection.find({ 坐标:{ $ nearSphere:{ $ geometry:{ 输入:" Point", 坐标:[ - 84.361727,32.214048] }, $ maxDistance:100 } } })