On this page
$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:{ <location field>: { $near: { $geometry: { type: "Point" , coordinates: [ <longitude> , <latitude> ] }, $maxDistance: <distance in meters>, $minDistance: <distance in meters> } } }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:{ $near: [ <x>, <y> ], $maxDistance: <distance in radians> }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.
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:
db.places.find(
   {
     location:
       { $near :
          {
            $geometry: { type: "Point",  coordinates: [ -73.9667, 40.78 ] },
            $minDistance: 1000,
            $maxDistance: 5000
          }
       }
   }
)
      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:
db.legacy2d.find(
   { location : { $near : [ -73.9667, 40.78 ], $maxDistance: 0.10 } }
)