当前位置:  开发笔记 > 编程语言 > 正文

在MongoDB中查找最接近坐标的entires

如何解决《在MongoDB中查找最接近坐标的entires》经验,为你挑选了1个好方法。

我很难找到最接近一组纬度/经度的物品.

我的对象的lat/lon存储如下:

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

这是我目前正在使用的查询,当我使用它时,我得不到任何结果,甚至没有空数组.

collection.find({coordinates: {$near: [40.296898, -111.694647] }, $maxDistance:100})

如何查询我的对象以找到最接近的对象?



1> Roger..:

你必须做三件事.

    您必须以[经度,纬度]顺序保存坐标.正如您在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}}})

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有