javascript 在MongoDB中查找与坐标最近的条目

8hhllhi2  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(133)

我很难找到最接近一套LAT/lon的项目。
我的对象将其纬度存储为(T/L):

"address": "some_address",
    "city": "some_city",
    "coordinates": [
      32.214048,
      -84.361727
    ]

这是我目前正在使用的查询,当我使用它时,我没有得到任何结果,甚至没有一个空数组。
第一个月
如何查询对象以查找最接近的对象?

lsmepo6l

lsmepo6l1#

你必须做三件主要的事情。
1.你必须按照[经度,纬度]的顺序保存坐标,这是mongo的要求,你可以在文档中看到,所以你的数据必须如下所示

{
        "address": "some_address",
        "city": "some_city",
        "coordinates": [
          -84.361727,
          32.214048
        ]
    }

1.正确设置数据后,必须创建2dsphere索引才能使用geoNear。

db.collection.createIndex({coordinates: "2dsphere"})

1.然后你必须修改你的查询。这里需要传递一个带有几何属性的$nearSphere,这是你按照我们之前说的[经度,纬度]顺序放置坐标的地方。

db.collection.find({ 
        coordinates: { 
            $nearSphere: { 
                $geometry: { 
                    type: "Point", 
                    coordinates: [ -84.361727 , 32.214048 ] 
                }, 
                $maxDistance: 100 
            } 
        } 
    })

相关问题