Importante
Eliminado en MongoDB 5.0
MongoDB 5.0 remueve el elemento obsoleto geoHaystack índice y comando geoSearch. Utilice un 2d índice con $geoNear o uno de los operadores del query geoespacial soportados.
Actualizar su instancia de MongoDB a 5.0 y configurar featureCompatibilityVersion en 5.0 eliminará cualquier índice geoHaystack preexistente.
Un índice haystack debe referenciar dos campos: el campo "ubicación" y un segundo campo. El segundo campo se usa para coincidencias exactas. Los índices haystack devuelven documentos basados en la ubicación y en una coincidencia exacta en un criterio adicional único. Estos índices no son necesariamente adecuados para devolver los documentos más cercanos a una ubicación en particular.
Para compilar un índice de pajar, utiliza la siguiente sintaxis:
db.coll.createIndex( { <location field> : "geoHaystack" , <additional field> : 1 } , { bucketSize : <bucket value> } )
Para compilar un índice haystack, debes especificar la opción bucketSize al crear el índice. Un bucketSize de 5 crea un índice que agrupa los valores de ubicación que se encuentran dentro de 5 unidades de la longitud y latitud especificadas. El bucketSize también determina la granularidad del índice. Puede ajustar el parámetro a la distribución de sus datos para que, en general, sólo busque regiones muy pequeñas. Las áreas definidas por buckets pueden superponerse. Un documento puede existir en varios partios.
Ejemplo
Si tiene una colección con documentos que contienen campos similares a los siguientes:
{ _id : 100, pos: { lng : 126.9, lat : 35.2 } , type : "restaurant"} { _id : 200, pos: { lng : 127.5, lat : 36.1 } , type : "restaurant"} { _id : 300, pos: { lng : 128.0, lat : 36.7 } , type : "national park"}
Las siguientes operaciones crean un índice haystack con buckets que almacenan claves dentro de 1 unidades de longitud o latitud.
db.places.createIndex( { pos : "geoHaystack", type : 1 } , { bucketSize : 1 } )
Este índice almacena el documento con un campo _id que tiene el valor 200 en dos categorías diferentes:
En un bucket que incluye el documento donde el campo
_idtiene un valor de100En un bucket que incluye el documento donde el campo
_idtiene un valor de300
Para query usando un índice haystack, utilice el comando geoSearch. Consulte query a un índice de Haystack.
De forma predeterminada, las consultas que utilizan un índice haystack devuelven 50 documentos.