$geoWithin
¶选择具有完全位于指定形状内的地理空间数据的文档。
指定的形状可以是GeoJSON 多边形
(单环或多环),GeoJSON
MultiPolygon或由旧式坐标对定义的形状。该$geoWithin
运营商使用$geometry
运营商指定GeoJSON的对象。
要使用默认坐标参考系统(CRS)指定GeoJSON多边形或多多边形,请使用以下语法:
对于$geoWithin
指定面积大于单个半球的GeoJSON几何的查询,使用默认CRS会查询互补的几何。
要使用自定义MongoDB CRS 指定单环GeoJSON 多边形,请使用以下在$geometry
表达式中指定自定义MongoDB CRS的原型
:
自定义MongoDB CRS使用逆时针缠绕顺序,并允许$geoWithin
使用面积大于或等于一个半球的单环GeoJSON 多边形支持查询。如果指定的多边形小于单个半球,$geoWithin
则MongoDB CRS 的行为与默认CRS相同。另请参见
“大”多边形。
如果查询包含在平面上的旧式坐标对定义的形状中,请使用以下语法:
可用的形状运算符为:
$box
,$polygon
,$center
(定义一个圆圈),以及$centerSphere
(在球体上定义一个圆)。重要
如果使用经度和纬度,请按顺序指定坐标。longitude, latitude
$geoWithin
不需要地理空间索引。但是,地理空间索引将提高查询性能。无论2dsphere和二维地理空间索引的支持
$geoWithin
。
该$geoWithin
运营商不返回排序的结果。这样,与排序结果的$geoWithin
地理空间查询$near
或$nearSphere
查询相比,MongoDB可以更快地返回查询。
$geoWithin
不保证它将考虑一个几何图形包含其组件几何图形,或另一个共享其组件几何图形的多边形。
对于$geoWithin
,如果您指定面积大于单个半球的单环多边形,则包含表达式;否则,查询互补几何。对于面积大于半球的所有其他GeoJSON多边形,查询互补几何。the
custom MongoDB coordinate reference system in the $geometry
$geoWithin
$geoWithin