Docs Menu
Docs Home
/ /
Geoespacial

geoSearch

geoSearch

Importante

Eliminado en MongoDB 5.0

MongoDB 5.0 elimina el obsoleto Índice geoHaystack y comando.geoSearch 2Utilice un índice d con o $geoNear uno de los operadores de consulta geoespaciales compatibles.

Actualizar su instancia de MongoDB a 5.0 y configurar featureCompatibilityVersion en 5.0 eliminará cualquier índice geoHaystack preexistente.

El comando geoSearch proporciona una interfaz para la funcionalidad índice Haystack de MongoDB. Estos índices son útiles para devolver resultados en función de coordenadas de ubicación después de recopilar resultados en función de alguna otra query (es decir, un "haystack").

El comando geoSearch acepta un documento que contiene los siguientes campos.

Campo
Tipo
Descripción

geoSearch

string

La colección a consultar.

search

Documento

Consulta para filtrar documentos.

near

arreglo

Coordenadas de un punto.

maxDistance

Número

Opcional. Distancia máxima desde el punto especificado.

limit

Número

Opcional. Número máximo de documentos a devolver.

readConcern

Documento

Opcional. Especifica el nivel de consistencia de lectura.

La opción readConcern tiene la siguiente sintaxis: readConcern: { level: <value> }

Los posibles niveles de consistencia de lectura son estos:

  • "local"Este es el nivel de consistencia de lectura por defecto para las operaciones de lectura contra el primario y los secundarios.

  • "available". Disponible para operaciones de lectura en el primario y los secundarios. "available" se comporta de la misma manera que "local" contra el primario y los secundarios no particionados. La query devuelve los datos más recientes de la instancia.

  • "majority". Disponible para Sets de réplicas que utilizan el motor de almacenamiento WiredTiger.

  • "linearizable". Disponible solo para operaciones de lectura en primary.

Para obtener más información sobre los niveles de consistencia de lectura, consulta Nivel de consistencia de lectura.

Para obtener más información sobre los niveles de preocupación de lectura, consulte Niveles de preocupación de lectura.

comment

any

Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:

Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.).

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

A menos que se especifique lo contrario, el geoSearch comando limita los resultados a 50 documentos.

geoSearch No es compatible con clústeres fragmentados.

geoSearch puede usarse dentro de transacciones distribuidas.

Importante

En la mayoría de los casos, una transacción distribuida incurre en un costo de rendimiento mayor que las escrituras de documentos individuales, y la disponibilidad de transacciones distribuidas no debería ser un sustituto para un diseño de esquema efectivo. Para muchos casos, el modelo de datos desnormalizado (documento incrustado y matrices) seguirá siendo óptimo para tus datos y casos de uso. Es decir, en muchos casos, modelar tus datos de forma adecuada minimizará la necesidad de transacciones distribuidas.

Para consideraciones adicionales sobre el uso de transacciones (como el límite de tiempo de ejecución y el límite de tamaño del oplog), consulta también las consideraciones de producción.

Considera el siguiente ejemplo:

db.runCommand({
geoSearch : "places",
near: [ -73.9667, 40.78 ],
maxDistance : 6,
search : { type : "restaurant" },
limit : 30
})

El comando anterior devuelve todos los documentos con un type de restaurant que tengan una distancia máxima de 6 unidades desde las coordenadas [ -73.9667, 40.78 ] en la colección places hasta un máximo de 30 resultados.

Para anular el nivel de consistencia de lectura por defecto de "local", usa la opción readConcern.

La siguiente operación en un set de réplicas especifica un nivel de consistencia de lectura de "majority" para leer la copia más reciente de los datos confirmados como están escritos en la mayoría de los nodos.

Nota

Independientemente del nivel de consistencia de lectura, es posible que los datos más recientes de un nodo no reflejen la versión más reciente de los datos en el sistema.

db.runCommand(
{
geoSearch: "places",
near: [ -73.9667, 40.78 ],
search : { type : "restaurant" },
readConcern: { level: "majority" }
}
)

Para asegurarte de que un solo hilo pueda leer sus propias escrituras, utiliza el nivel de consistencia de lectura "majority" y el nivel de confirmación de escritura "majority" contra el primario del set de réplicas.

Volver

Geoespacial

En esta página