Geospatial Indexes and Queries¶
On this page
MongoDB offers a number of indexes and query mechanisms to handle geospatial information. This section introduces MongoDB’s geospatial features.
Before storing your location data and writing queries, you must decide the type of surface to use to perform calculations. The type you choose affects how you store data, what type of index to build, and the syntax of your queries.
MongoDB offers two surface types:
To calculate geometry over an Earth-like sphere, store your location data on a spherical surface and use 2dsphere index.
Store your location data as GeoJSON objects with this coordinate-axis order: longitude, latitude. The coordinate reference system for GeoJSON uses the WGS84 datum.
If you choose spherical surface calculations, you store location data as either:
New in version 2.4: Support for GeoJSON storage and queries is new in version 2.4. Prior to version 2.4, all geospatial data used coordinate pairs.
Changed in version 2.6: Support for additional GeoJSON types: MultiPoint, MultiLineString, MultiPolygon, GeometryCollection.
MongoDB supports the following GeoJSON objects:
MongoDB’s geospatial query operators let you query for:
MongoDB can query for locations contained entirely within a
specified polygon. Inclusion queries use the
2dsphere indexes can support inclusion
queries. MongoDB does not require an index for inclusion queries;
however, such indexes will improve query performance.
MongoDB can query for locations that intersect with a specified
geometry. These queries apply only to data on a spherical
surface. These queries use the
2dsphere indexes support intersection.
MongoDB provides the following geospatial index types to support the geospatial queries.
2dsphere indexes support:
- Calculations on a sphere
- GeoJSON objects and include backwards compatibility for legacy coordinate pairs
- Compound indexes with scalar index fields (i.e. ascending or
descending) as a prefix or suffix of the
New in version 2.4:
2dsphere indexes are not available before version 2.4.
Geospatial Indexes and Sharding¶
You cannot use a geospatial index as the shard key index.
You can create and maintain a geospatial index on a sharded collection if it uses fields other than the shard key fields.
You can also query for geospatial data using
The following pages provide complete documentation for geospatial indexes and queries:
- 2dsphere Indexes
2dsphereindex supports queries that calculate geometries on an earth-like sphere. The index supports data stored as both GeoJSON objects and as legacy coordinate pairs.
- 2d Indexes
2dindex supports data stored as legacy coordinate pairs and is intended for use in MongoDB 2.2 and earlier.
- geoHaystack Indexes
- A haystack index is a special index optimized to return results
over small areas. For queries that use spherical geometry, a
2dsphereindex is a better option than a haystack index.
- 2d Index Internals
- Provides a more in-depth explanation of the internals of geospatial indexes. This material is not necessary for normal operations but may be useful for troubleshooting and for further understanding.