On this page
2d Indexes
On this page
Use a 2d
index for data stored as points on a two-dimensional plane. The 2d
index is intended for legacy coordinate pairs used in MongoDB 2.2 and earlier.
Use a 2d
index if:
- your database has legacy legacy coordinate pairs from MongoDB 2.2 or earlier, and
- you do not intend to store any location data as GeoJSON objects.
For more information on geospatial queries, see Geospatial Queries.
Considerations
The geoNear
command and the $geoNear
pipeline stage require that a collection have at most only one 2d
index and/or only one 2dsphere index whereas geospatial query operators (e.g. $near
and $geoWithin
) permit collections to have multiple geospatial indexes.
The geospatial index restriction for the geoNear
command and the $geoNear
pipeline stage exists because neither the geoNear
command nor the $geoNear
pipeline stage syntax includes the location field. As such, index selection among multiple 2d
indexes or 2dsphere
indexes is ambiguous.
No such restriction applies for geospatial query operators since these operators take a location field, eliminating the ambiguity.
Do not use a 2d
index if your location data includes GeoJSON objects. To index on both legacy coordinate pairs and GeoJSON objects, use a 2dsphere index.
You cannot use a 2d
index as a shard key when sharding a collection. However, you can create a geospatial index on a sharded collection by using a different field as the shard key.
Behavior
The 2d
index supports calculations on a flat, Euclidean plane. The 2d
index also supports distance-only calculations on a sphere (i.e. $nearSphere
), but for geometric calculations on a sphere (e.g. $geoWithin
), store data as GeoJSON objects and use a 2dsphere
index.
A 2d
index can reference two fields. The first must be the location field. A 2d
compound index constructs queries that select first on the location field, and then filters those results by the additional criteria. A compound 2d
index can cover queries.
sparse
Property
2d
indexes are always sparse and ignore the sparse option. If a document lacks a 2d
index field (or the field is null
or an empty array), MongoDB does not add an entry for the document to the 2d
index. For inserts, MongoDB inserts the document but does not add to the 2d
index.
For a compound index that includes a 2d
index key along with keys of other types, only the 2d
index field determines whether the index references a document.
Collation Option
2d
indexes only support simple binary comparison and do not support the collation option.
To create a 2d
index on a collection that has a non-simple collation, you must explicitly specify {collation: {locale: "simple"} }
when creating the index.