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