Saltar al contenido

Distancia de impresión MongoDB entre dos puntos

Necesitamos tu apoyo para extender nuestras reseñas sobre las ciencias informáticas.

Puedes usar el $geoNear etapa de tubería agregada para producir una distancia desde el punto consultado:

 db.new_stores.aggregate([
     "$geoNear": 
        "near": 
            "type": "Point",
            "coordinates": [ -81.093699, 32.074673 ]
        , 
        "maxDistance": 500 * 1609,
        "spherical": true,
        "distanceField": "distance",
        "distanceMultiplier": 0.000621371
    
]).pretty()

Esto le permite especificar "distanceField" que producirá otro campo en los documentos de salida que contiene la distancia desde el punto consultado. También puedes usar "distanceMultiplier" para aplicar cualquier conversión a la distancia de salida según sea necesario (es decir, metros a millas, y teniendo en cuenta que todas las distancias GeoJSON se devuelven en metros)

También está el geoNear comando con opciones similares, pero por supuesto no devuelve un cursor como salida.

MongoDB proporciona una $geoCerca agregador para calcular la distancia de los documentos en una colección con coordenadas GeoJson.

Entendámoslo con un ejemplo sencillo. Considere una tienda de colección simple

1. Crear colección

db.createCollection('shops')

2. Insertar documentos en colecciones de tiendas

db.shops.insert(name:"Galaxy store",address:type:"Point",coordinates:[28.442894,77.341299])

db.shops.insert(name:"A2Z store",address:type:"Point",coordinates:[28.412894,77.311299])

db.shops.insert(name:"Mica store",address:type:"Point",coordinates:[28.422894,77.342299])

db.shops.insert(name:"Full Stack developer",address:type:"Point",coordinates:[28.433894,77.334299])

3. crear GeoIndex en los campos de “dirección”

db.shops.createIndex(address: "2dsphere"  )

4. Ahora usa un $geoCerca agregador

para averiguar los documentos con la distancia.

db.shops.aggregate([$geoNear:near:type:"Point",coordinates:[28.411134,77.331801],distanceField: "shopDistance",$maxDistance:150000,spherical: true]).pretty()

Aquí coordenadas:[28.411134,77.331801] es la posición central o la posición requerida desde donde se obtendrán los documentos.

distanciaCampo:”tiendaDistancia” , $geoNear Aggregator devuelve shopDistance como campos en el resultado.

Resultado:

 "_id" : ObjectId("5ef047a4715e6ae00d0893ca"), "name" : "Full Stack developer", "address" :  "type" : "Point", "coordinates" : [ 28.433894, 77.334299 ] , "shopDistance" : 621.2848190449148 
 "_id" : ObjectId("5ef0479e715e6ae00d0893c9"), "name" : "Mica store", "address" :  "type" : "Point", "coordinates" : [ 28.422894, 77.342299 ] , "shopDistance" : 1203.3456146763526 
 "_id" : ObjectId("5ef0478a715e6ae00d0893c7"), "name" : "Galaxy store", "address" :  "type" : "Point", "coordinates" : [ 28.442894, 77.341299 ] , "shopDistance" : 1310.9612119555288 
 "_id" : ObjectId("5ef04792715e6ae00d0893c8"), "name" : "A2Z store", "address" :  "type" : "Point", "coordinates" : [ 28.412894, 77.311299 ] , "shopDistance" : 2282.6640175038788 

Aquí shopDistance estará en metros.

Te mostramos reseñas y calificaciones

Agradecemos que quieras sustentar nuestra publicación fijando un comentario y dejando una puntuación te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *