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 不需要地理空间索引。但是,地理空间索引可提高查询性能。只有 2dsphere 地理空间索引支持 $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" }
}
}
}
}
}
)

后退

地理空间查询

在此页面上