$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