首页  ·  知识 ·  数据库
MongoDB空间查询
记者  新浪科技  NOSQL  编辑:dezai   图片来源:网络
ongoDB在2.4版本以后,对空间查询支持更友好了

ongoDB 在2.4版本以后,对空间查询支持更友好了,下面简介一下$geoWithin,文章翻译自:http://docs.mongodb.org/manual/reference/operator/geoWithin/#op._S_geoWithin

$geoWithin

      在MongoDB2.4中使用$geoWithin操作符(或称函数,下亦同)替代废弃的$within操作符。$geoWithin操作符是一个支持查询在一个几何要素内(完全在这几何要素内)的另一个特定的点、线或者其他几何类型要素。$geoWithin操作符支持GeoJSON作为查询条件。$geoWithin操作符不返回排序的结果集。它的查询效率要比支持排序的$near或者$nearSphere操作符快。

     $geoWithin支持空间索引。和2.2.3版本$geoWithin不同的是,它需要空间索引,这样可以提升空间查询效率。

     查询一个多边形内部所有要素的语法如下:

   db.<</span>collection>.find( { <</span>location field> :
                         { $geoWithin :
                            { $geometry :
                               { type : "Polygon" ,
                                 coordinates : [ [ [ <</span>lng1>, <</span>lat1> ] , [ <</span>lng2>, <</span>lat2> ] ... ] ]
                      } } } } )

需要特别声明的是:坐标的顺序必须这样,“经度,维度”。

下面的例子是查询一个多边形范围内所有索引的地名要素。

db.places.find( { loc :
                  { $geoWithin :
                    { $geometry :
                      { type : "Polygon" ,
                        coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
                } } } } )

对于几何查询, 可以参考:

本文作者:记者 来源:新浪科技
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读