- Indexes >
- Indexing Tutorials >
- Geospatial Index Tutorials >
- Query a
2dIndex
Query a 2d Index¶
On this page
The following sections describe queries supported by the 2d index.
Points within a Shape Defined on a Flat Surface¶
To select all legacy coordinate pairs found within a given shape on a flat
surface, use the $geoWithin operator along with a shape
operator. Use the following syntax:
The following queries for documents within a rectangle defined by [ 0
, 0 ] at the bottom left corner and by [ 100 , 100 ] at the top
right corner.
The following queries for documents that are within the circle centered
on [ -74 , 40.74 ] and with a radius of 10:
For syntax and examples for each shape, see the following:
Points within a Circle Defined on a Sphere¶
MongoDB supports rudimentary spherical queries on flat 2d indexes for
legacy reasons. In general, spherical calculations should use a 2dsphere
index, as described in 2dsphere Indexes.
To query for legacy coordinate pairs in a “spherical cap” on a sphere,
use $geoWithin with the $centerSphere operator.
Specify an array that contains:
- The grid coordinates of the circle’s center point
- The circle’s radius measured in radians. To calculate radians, see Calculate Distance Using Spherical Geometry.
Use the following syntax:
The following example query returns all documents within a 10-mile
radius of longitude 88 W and latitude 30 N. The example converts
distance to radians by dividing distance by the approximate radius of
the earth, 3959 miles:
Proximity to a Point on a Flat Surface¶
Proximity queries return the 100 legacy coordinate pairs closest to the
defined point and sort the results by distance. Use either the
$near operator or geoNear command. Both require
a 2d index.
The $near operator uses the following syntax:
For examples, see $near.
The geoNear command uses the following syntax:
The geoNear command offers more options and returns more
information than does the $near operator. To run the
command, see geoNear.
Exact Matches on a Flat Surface¶
You can use the db.collection.find() method to query for an
exact match on a location. These queries use the following syntax:
This query will return any documents with the value of [ <x> , <y> ].