geoHaystack
Indexes
On this page
Important
Deprecation
MongoDB 4.4 deprecates the geoHaystack index and the
geoSearch
command. Use a 2d index
with $geoNear
or $geoWithin
instead.
A geoHaystack
index is a special index that is optimized to return
results over small areas. geoHaystack
indexes improve performance
on queries that use flat geometry.
For queries that use spherical geometry, a 2dsphere index is a better
option than a haystack index. 2dsphere indexes allow field reordering; geoHaystack
indexes
require the first field to be the location field. Also, geoHaystack
indexes are only usable via commands and so always return all results
at once.
Behavior
geoHaystack
indexes create "buckets" of documents from the same
geographic area in order to improve performance for queries limited to
that area. Each bucket in a geoHaystack
index contains all the
documents within a specified proximity to a given longitude and
latitude.
sparse
Property
geoHaystack
indexes are sparse by
default and ignore the sparse: true
option. If a document lacks a geoHaystack
index field (or the field
is null
or an empty array), MongoDB does not add an entry for the
document to the geoHaystack
index. For inserts, MongoDB inserts the
document but does not add to the geoHaystack
index.
geoHaystack
indexes include one geoHaystack
index key and one
non-geospatial index key; however, only the geoHaystack
index field
determines whether the index references a document.
Collation Option
geoHaystack
indexes only support simple binary comparison and do not support
the collation.
To create a geoHaystack
index on a collection that has a non-simple
collation, you must explicitly specify {collation: {locale: "simple"}
}
when creating the index.
Create geoHaystack
Index
To create a geoHaystack
index, see
Create a Haystack Index. For information and example
on querying a haystack index, see
Query a Haystack Index.