- Indexes >
2dIndexes
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.