Importante
Eliminado en MongoDB 5.0
MongoDB 5.0 elimina el obsoleto geoHaystack índice y comando geoSearch. Utilice un 2d index con o uno $geoNear de los operadores de consulta geoespacial admitidos en su lugar.
Actualizar su instancia de MongoDB a 5.0 y configurar featureCompatibilityVersion en 5.0 eliminará cualquier índice geoHaystack preexistente.
Un índice de pila debe hacer referencia a dos campos: el de ubicación y un segundo campo. Este último se utiliza para coincidencias exactas. Los índices de pila devuelven documentos según la ubicación y una coincidencia exacta con un único criterio adicional. Estos índices no son necesariamente adecuados para devolver los documentos más cercanos a una ubicación específica.
Para crear un índice de pajar, utilice la siguiente sintaxis:
db.coll.createIndex( { <location field> : "geoHaystack" , <additional field> : 1 } , { bucketSize : <bucket value> } )
Para crear un índice de pajar, debe especificar la opción bucketSize al crearlo. Un bucketSize de 5 crea un índice que agrupa los valores de ubicación que se encuentran a 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, en general, buscar solo en regiones muy pequeñas. Las áreas definidas por los depósitos pueden superponerse. Un documento puede existir en varios depósitos.
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 de pajar con contenedores que almacenan claves dentro de la unidad 1 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 depósito que incluye el documento donde el campo
_idtiene un valor de100En un depósito que incluye el documento donde el campo
_idtiene un valor de300
Para consultar un índice Haystack, utilice el geoSearch comando. Consulte Consultar un índice Haystack.
De forma predeterminada, las consultas que utilizan un índice haystack devuelven 50 documentos.