Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$geoIntersects

在此页面上

  • 定义
  • 行为
  • 举例
$geoIntersects

选择地理空间数据与指定 GeoJSON 对象相交的文档;即其中数据与指定对象的交集为非空。

$geoIntersects操作符使用$geometry操作符来指定GeoJSON对象。要使用默认坐标参考系 (CRS) 指定 GeoJSON 多边形或多边形多边形,请使用以下语法:

{
<location field>: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>" ,
coordinates: [ <coordinates> ]
}
}
}
}

对于指定面积大于单个半球的 GeoJSON 几何图形的$geoIntersects查询,使用默认 CRS 会导致查询互补几何图形。

要使用自定义 MongoDB CRS 指定单环 GeoJSON 多边形,请在 $geometry 表达式中使用指定自定义 MongoDB CRS 的原型:

{
<location field>: {
$geoIntersects: {
$geometry: {
type: "Polygon" ,
coordinates: [ <coordinates> ],
crs: {
type: "name",
properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" }
}
}
}
}
}

自定义 MongoDB CRS 使用逆时针缠绕顺序,并允许$geoIntersects支持使用面积大于或等于单个半球的单环 GeoJSON多边形进行查询。如果指定的多边形小于单个半球,则 MongoDB CRS 的$geoIntersects行为与默认 CRS 相同。另请参阅“大型”多边形。

重要

如果指定纬度和经度坐标,则先列出经度,然后列出纬度

  • 有效经度值介于 -180180 之间,两者均包括在内。

  • 有效纬度值介于 -9090 之间,两者均包括在内。

$geoIntersects使用球面几何。 $geoIntersects不需要地理空间索引。但是,地理空间索引可提高查询性能。只有2 dsphere地理空间索引支持$geoIntersects

$geoIntersects 不保证它会考虑多边形与其自己的边相交;它自己的顶点;或另一个共享顶点或边但没有内部空间的多边形。

对于$geoIntersects ,如果您指定面积大于单个半球的单环多边形,请在$geometry表达式中包含自定义 MongoDB 坐标参考系。否则, $geoIntersects将查询互补几何体。对于面积大于半球的所有其他 GeoJSON 多边形, $geoIntersects会查询互补几何体。

以下示例使用$geoIntersects选择与coordinates数组定义的Polygon相交的所有loc数据。多边形的面积小于单半球的面积:

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

对于面积大于单半球的单环多边形,请参阅与“大”多边形相交。

如需使用面积大于单个半球的单环 GeoJSON 多边形进行查询,$geometry 表达式必须指定自定义 MongoDB 坐标参考系。例如:

db.places.find(
{
loc: {
$geoIntersects: {
$geometry: {
type : "Polygon",
coordinates: [
[
[ -100, 60 ], [ -100, 0 ], [ -100, -60 ], [ 100, -60 ], [ 100, 60 ], [ -100, 60 ]
]
],
crs: {
type: "name",
properties: { name: "urn:x-mongodb:crs:strictwinding:EPSG:4326" }
}
}
}
}
}
)
← 地理空间查询操作符

在此页面上