在数据库查询中按纬度和经度对位置进行排序

时间:2016-02-28 21:18:09

标签: java mongodb latitude-longitude

  1. 在数据库(mongodb)中存储具有latitude and longitude
  2. 的对象
  3. 例如,我在服务器(tomcat)上指向latitude and longitude
  4. 我想制作query,根据他们的latitude and longitude,它会返回按此距离(从最近到最远)排序的所有对象。

    有人可以帮助我,如何进行此类查询?当我只有latitude and longitude时,我就不知道如何按距离排序规则。

    db中的对象结构:{"id","name","latitude","longitude"}

1 个答案:

答案 0 :(得分:0)

从mongo DB帮助页面 - 您可以使用$ near 所有结果从最近的一个到最需要的点

排序
  

MongoDB near help          ...

语法:

{
  $near: {
     $geometry: {
        type: "Point" ,
        coordinates: [ <longitude> , <latitude> ]
     },
     $maxDistance: <distance in meters>,
     $minDistance: <distance in meters>
  }
}
  

和可用的例子

db.places.find(
   {
     location:
       { $near :
          {
            $geometry: { type: "Point",  coordinates: [ -73.9667, 40.78 ] },
            $minDistance: 1000,
            $maxDistance: 5000
          }
       }
   }
)