Docs Menu
Docs Home
/
MongoDB Manual
/

geoHaystack Indexes

On this page

  • Behavior
  • sparse Property
  • Create geoHaystack Index

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.

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.

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.

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.

To create a geoHaystack index, see Create a Haystack Index. For information and example on querying a haystack index, see Query a Haystack Index.

Back

Calculate Distance Using Spherical Geometry