$near¶
On this page
Definition¶
-
$near
¶ Specifies a point for which a geospatial query returns the documents from nearest to farthest. The
$near
operator can specify either a GeoJSON point or legacy coordinate point.$near
requires a geospatial index:- 2dsphere index if specifying a GeoJSON point,
- 2d index if specifying a point using legacy coordinates.
To specify a GeoJSON point,
$near
operator requires a 2dsphere index and has the following syntax:When specifying a GeoJSON point, you can use the optional
$minDistance
and$maxDistance
specifications to limit the$near
results by distance in meters:$minDistance
limits the results to those documents that are at least the specified distance from the center point.$minDistance
is only available for use with 2dsphere index.New in version 2.6.
$maxDistance
limits the results to those documents that are at most the specified distance from the center point.
To specify a point using legacy coordinates,
$near
requires a 2d index and has the following syntax:If you use longitude and latitude for legacy coordinates, specify the longitude first, then latitude.
When specifying a legacy coordinate, you can use the optional
$maxDistance
specification to limit the$near
results by distance in radians.$maxDistance
limits the results to those documents that are at most the specified distance from the center point.
Behavior¶
2d
Index¶
$near
queries that use a 2d index return a
limit of 100 documents.
If using a 2d
index for $near
, specifying a batch size
(i.e. batchSize()
) in conjunction with $near
queries that use a 2d index is undefined. See
SERVER-5236 for more information.
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
Specify coordinates in this order: “longitude, latitude.”
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
Specify coordinates in this order: “longitude, latitude.”
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:
The result set contains at most 100 documents.