1. lbs地理空间索引 关于lbs相关项目,一般存储每个地点的经纬度的坐标, 如果要查询附近的场所,则需要建立索引来提升查询效率。 mongodb专门针对这种查询建立了地理空间索引。 2d和2dsphere索引。 2. 创建索引 建立places集合,来存放地点, loc字段用来存
1. lbs地理空间索引关于lbs相关项目,一般存储每个地点的经纬度的坐标, 如果要查询附近的场所,则需要建立索引来提升查询效率。 mongodb专门针对这种查询建立了地理空间索引。 2d和2dsphere索引。2. 创建索引建立places集合,来存放地点, loc字段用来存放地区数据geojson point。db.places.insert( { loc : { type: point, coordinates: [ -73.97, 40.77 ] }, name: central park, category : parks })db.places.insert( { loc : { type: point, coordinates: [ -73.88, 40.78 ] }, name: la guardia airport, category : airport })
建立索引db.places.ensureindex( { loc : 2dsphere } )
参数不是1或-1,为2dsphere。还可以建立组合索引。db.places.ensureindex( { loc : 2dsphere , category : -1, name: 1 } )
3. 查询$geometry表示查询的几何图片.3.1 查询多边形范围的值type表示类型:polygon 多边形db.places.find( { loc : { $geowithin : { $geometry : { type : polygon , coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] } } } } )
3.2 查询附近的值使用$near来查询附近的地点。 db.places.find( { loc : { $near : { $geometry : { type : point , coordinates : [ , ] } , $maxdistance : } } } )
3.3 查询圆形内的值查询圆时,需要指定圆心, 半径。db.places.find( { loc : { $geowithin : { $centersphere : [ [ -88 , 30 ] , 10 ] } } } )
[-88, 30] 为经纬度, 10为半径。
地址:http://blog.csdn.net/yonggang7/article/details/28109463