$near¶
On this page
Definition¶
-
$near¶ Specifies a point for which a geospatial query returns the documents from nearest to farthest. The
$nearoperator can specify either a GeoJSON point or legacy coordinate point.$nearrequires a geospatial index:- 2dsphere index if specifying a GeoJSON point,
- 2d index if specifying a point using legacy coordinates.
To specify a GeoJSON point,
$nearoperator requires a 2dsphere index and has the following syntax:If specifying latitude and longitude coordinates, list the longitude first and then latitude:
- Valid longitude values are between
-180and180, both inclusive. - Valid latitude values are between
-90and90, both inclusive.
When specifying a GeoJSON point, you can use the optional
$minDistanceand$maxDistancespecifications to limit the$nearresults by distance in meters:$minDistancelimits the results to those documents that are at least the specified distance from the center point.$minDistanceis only available for use with 2dsphere index.New in version 2.6.
$maxDistancelimits the results to those documents that are at most the specified distance from the center point.
To specify a point using legacy coordinates,
$nearrequires a 2d index and has the following syntax:When specifying a legacy coordinate, you can use the optional
$maxDistancespecification to limit the$nearresults by distance in radians.$maxDistancelimits the results to those documents that are at most the specified distance from the center point.
Behavior¶
Special Indexes Restriction¶
You cannot combine the $near operator, which requires a
special geospatial index, with a
query operator or command that requires another special index. For
example you cannot combine $near with the $text
query.
Sharded Collections Restrictions¶
For sharded collections, queries using $near are not
supported. You can instead use either the geoNear command
or the $geoNear aggregation stage.
Sort Operation¶
$near sorts documents by distance. If you also include a
sort() for the query, sort()
re-orders the matching documents, effectively overriding the sort
operation already performed by $near. When using
sort() with geospatial queries, consider using
$geoWithin operator, which does not sort documents, instead of
$near.
Examples¶
Query on GeoJSON Data¶
Important
If specifying latitude and longitude coordinates, list the longitude first and then latitude:
- Valid longitude values are between
-180and180, both inclusive. - Valid latitude values are between
-90and90, both inclusive.
Consider a collection places that has a 2dsphere index.
The following example returns documents that are at least 1000
meters from and at most 5000 meters from the specified GeoJSON
point, sorted from nearest to farthest:
Query on Legacy Coordinates¶
Important
If specifying latitude and longitude coordinates, list the longitude first and then latitude:
- Valid longitude values are between
-180and180, both inclusive. - Valid latitude values are between
-90and90, both inclusive.
Consider a collection legacy2d that has a 2d index.
The following example returns documents that are at most 0.10
radians from the specified legacy coordinate pair, sorted from nearest
to farthest: