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 geoHaystack índice y el comando geoSearch. Utiliza un 2d índice con $geoNear o uno de los operadores del query geoespacial soportados.

Si se cambia la instancia de MongoDB a 5.0 y se configura featureCompatibilityVersion en 5.0, se borrarán todos los índices de 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 query usando un índice haystack, utilice el comando geoSearch. Consulte query a un índice de Haystack.

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

Volver

geohaystack