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.