Este capítulo presenta una de las funciones de consulta geoespacial de MongoDB, que es la consulta de datos de documentos basada en la distancia.
Escenarios de aplicación: búsqueda de tiendas cercanas y localización de personas cercanas.
Tutorial Requerido
Formato de Almacenamiento de Datos Geoespaciales de MongoDB
Los requisitos previos para consultar datos basados en la distancia son los siguientes:
- Cada dato del documento contiene un campo que almacena datos de coordenadas, por ejemplo: el campo
location
almacena las coordenadas de una tienda. - Crear un índice espacial 2dsphere o 2d.
El Operador $near
MongoDB utiliza el operador $near para consultar datos de documentos basados en la distancia.
Formato:
{
<campo de ubicación>: { // Campo que almacena los datos de coordenadas
$near: {
$geometry: { // Establecer las coordenadas de referencia para la comparación
type: "Point" ,
coordinates: [ longitud , latitud ]
},
$maxDistance: distancia máxima, en metros,
$minDistance: distancia mínima, en metros
}
}
}
Nota: Los datos devueltos por la consulta $near están ordenados de más cercanos a más lejanos.
Ejemplo
Supongamos que la colección shop
almacena datos de tiendas, donde el campo location
almacena las coordenadas de cada tienda. La siguiente consulta encuentra la tienda más cercana a mí (distancia mínima 1000 metros, distancia máxima 5000 metros).
db.shop.find(
{
location:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, // Mis coordenadas
$minDistance: 1000, // Distancia mínima
$maxDistance: 5000 // Distancia máxima
}
}
}
)