mongodb 地理位置搜寻

来源:互联网 发布:手机淘宝怎么关闭店铺 编辑:程序博客网 时间:2024/05/17 14:19

LBS,存储每个地点的经纬度坐标,搜寻附近的地点,建立地理位置索引可提高查询效率。

MongoDB地理位置索引,2d2dsphere,对应平面和球面。


1.创建lbs集合存放地点坐标

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. use lbs;  
  2.   
  3. db.lbs.insert(  
  4.     {  
  5.         loc:{  
  6.             type: "Point",  
  7.             coordinates: [113.332264, 23.156206]  
  8.         },  
  9.         name: "广州东站"  
  10.     }  
  11. )  
  12.   
  13. db.lbs.insert(  
  14.     {  
  15.         loc:{  
  16.             type: "Point",  
  17.             coordinates: [113.330611, 23.147234]  
  18.         },  
  19.         name: "林和西"  
  20.     }  
  21. )  
  22.   
  23. db.lbs.insert(  
  24.     {  
  25.         loc:{  
  26.             type: "Point",  
  27.             coordinates: [113.328095, 23.165376]  
  28.         },  
  29.         name: "天平架"  
  30.     }  
  31. )  

2.创建地理位置索引

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. db.lbs.ensureIndex(  
  2.     {  
  3.         loc: "2dsphere"  
  4.     }  
  5. )  

3.查询附近的坐标

当前位置为:时代广场,

坐标:113.323568, 23.146436


搜寻附近一公里内的点,由近到远排序

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. db.lbs.find(  
  2.     {  
  3.         loc: {  
  4.             $near:{  
  5.                 $geometry:{  
  6.                     type: "Point",  
  7.                     coordinates: [113.323568, 23.146436]  
  8.                 },  
  9.                 $maxDistance: 1000  
  10.             }  
  11.         }  
  12.     }  
  13. )  

搜寻结果:

[plain] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. { "_id" : ObjectId("556a651996f1ac2add8928fa"), "loc" : { "type" : "Point", "coordinates" : [ 113.330611, 23.147234 ] }, "name" : "林和西" }  
0 0
原创粉丝点击