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

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

Volver

geohaystack