2d
Indexes
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
Starting in MongoDB 4.0, you can specify a key
option to the
$geoNear
pipeline stage to indicate the indexed field path
to use. This allows the $geoNear
stage to be used on a
collection that has multiple 2d
index and/or multiple
2dsphere index:
If your collection has multiple
2d
index and/or multiple 2dsphere index, you must use thekey
option to specify the indexed field path to use.If you do not specify the
key
, you cannot have multiple2d
index and/or multiple 2dsphere index since without thekey
, index selection among multiple2d
indexes or2dsphere
indexes is ambiguous.
Note
If you do not specify the key
, and you have at most only one
2d
index and/or only one 2dsphere index,
MongoDB looks first for a 2d
index to use. If a 2d
index
does not exists, then MongoDB looks for a 2dsphere
index to use.
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.