Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
geohaystack

Crear un índice Haystack

Importante

Eliminado en MongoDB 5.0

MongoDB 5.0 remueve el elemento obsoleto índice geoHaystack y geoSearch comando. En su lugar, utilice un índice2D con $geoNear o uno de los operadores del query geoespacial compatibles.

Si actualizas tu instancia de MongoDB a 5.0 y estableces featureCompatibilityVersion en 5.0, se eliminarán todos los índices geoHaystack preexistentes.

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 tienes 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 compartimientos diferentes:

  • En un bucket que incluye el documento donde el campo _id tiene un valor de 100

  • En un bucket que incluye el documento donde el campo _id tiene un valor de 300

Para consultar usando un índice de pajar, usa el comando geoSearch. Consulta Consulta un índice de Haystack.

Por defecto, las consultas que utilizan un índice haystack devuelven 50 documentos.

Volver

geohaystack