Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
$geoNear
La etapa de $geoNear agregación devuelve los documentos en orden de proximidad a un punto específico. Calcula la distancia desde el punto e incluye la distancia en los documentos de salida.
Parámetros
-
near: el punto desde el que se calculan las distancias, especificado como GeoJSON o coordenadas heredadas. -
distanceField: el nombre del campo para almacenar la distancia calculada. -
spherical: booleano que indica si se debe utilizar geometría esférica (obligatorio para los puntos GeoJSON). -
maxDistance: opcional. Distancia máxima desde el punto central. -
minDistance: opcional. Distancia mínima desde el punto central. -
query: opcional. Criterios de filtro adicionales que se deben aplicar. -
limit: opcional. Número máximo de documentos a devolver. -
key: opcional. Campo que se utilizará para la consulta geoespacial cuando existen varios índices geoespaciales.
Ejemplo (MongoDB Shell)
En el siguiente ejemplo, se muestra el uso del $geoNear escenario para buscar las tiendas más cercanas a una ubicación determinada.
Cree documentos de muestra
db.stores.createIndex({ location: "2dsphere" }); db.stores.insertMany([ { _id: 1, name: "Store A", location: { type: "Point", coordinates: [-122.4, 37.8] } }, { _id: 2, name: "Store B", location: { type: "Point", coordinates: [-122.5, 37.7] } }, { _id: 3, name: "Store C", location: { type: "Point", coordinates: [-122.3, 37.9] } } ]);
Ejemplo de consulta
db.stores.aggregate([ { $geoNear: { near: { type: "Point", coordinates: [-122.4, 37.8] }, distanceField: "distance", spherical: true } } ]);
Salida
[
{ _id: 1, name: 'Store A', location: { type: 'Point', coordinates: [ -122.4, 37.8 ] }, distance: 0 },
{ _id: 3, name: 'Store C', location: { type: 'Point', coordinates: [ -122.3, 37.9 ] }, distance: 13877.82 },
{ _id: 2, name: 'Store B', location: { type: 'Point', coordinates: [ -122.5, 37.7 ] }, distance: 15557.89 }
]
Ejemplos de código
Para ver un ejemplo de código para usar la etapa de $geoNear agregación, elija la pestaña correspondiente al idioma que desee usar: