On this page本页内容
$geoIntersects
¶Selects documents whose geospatial data intersects with a specified GeoJSON object; i.e. where the intersection of the data and the specified object is non-empty.
The $geoIntersects
operator uses the $geometry
operator to specify the GeoJSON object. To specify a GeoJSON polygons or multipolygons using the default coordinate reference system (CRS), use the following syntax:
For $geoIntersects
queries that specify GeoJSON geometries with areas greater than a single hemisphere, the use of the default CRS results in queries for the complementary geometries.
To specify a single-ringed GeoJSON polygon with a custom MongoDB CRS, use the following prototype that specifies the custom MongoDB CRS in the $geometry
expression:
The custom MongoDB CRS uses a counter-clockwise winding order and allows $geoIntersects
to support queries with a single-ringed GeoJSON polygon whose area is greater than or equal to a single hemisphere. If the specified polygon is smaller than a single hemisphere, the behavior of $geoIntersects
with the MongoDB CRS is the same as with the default CRS. See also “Big” Polygons.
Important
If specifying latitude and longitude coordinates, list the longitude first and then latitude:
-180
and 180
, both inclusive.-90
and 90
, both inclusive.$geoIntersects
uses spherical geometry. $geoIntersects
does not require a geospatial index. However, a geospatial index will improve query performance. Only the 2dsphere geospatial index supports $geoIntersects
.
$geoIntersects
does not guarantee that it will consider a polygon to intersect with its own edges; its own vertices; or another polygon sharing vertices or edges but no interior space.
For $geoIntersects
, if you specify a single-ringed polygon that has an area greater than a single hemisphere, include the custom MongoDB coordinate reference system in the $geometry
expression; otherwise, $geoIntersects
queries for the complementary geometry. For all other GeoJSON polygons with areas greater than a hemisphere, $geoIntersects
queries for the complementary geometry.
The following example uses $geoIntersects
to select all loc
data that intersect with the Polygon defined by the coordinates
array. The area of the polygon is less than the area of a single hemisphere:
For single-ringed polygons with areas greater than a single hemisphere, see Intersects a “Big” Polygon.