Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
geohaystack

Crear un índice de pajar

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.

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 _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.

De forma predeterminada, las consultas que utilizan un índice haystack devuelven 50 documentos.

Volver

geohaystack