Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Query sobre ubicaciones cercanas a un punto en una esfera

Puedes query los datos de ubicación que aparecen cerca de un punto específico en una esfera.

Para query datos de ubicación cerca de un punto especificado, utilice el operador $near:

db.<collection>.find( {
<location field> : {
$near : {
$geometry : {
type : "Point",
coordinates : [ <longitude>, <latitude> ]
},
$maxDistance : <distance in meters>
}
}
} )
  • Al especificar las coordenadas de longitud y latitud, enumere primero la longitud y luego la latitud.

    • Los valores de longitud válidos están entre -180 y 180, ambos inclusive.

    • Los valores de latitud válidos están entre -90 y 90, ambos inclusive.

  • Especifique la distancia en el campo $maxDistance en metros.

  1. Crea una colección places que contenga estos documentos:

    db.places.insertMany( [
    {
    loc: { type: "Point", coordinates: [ -73.97, 40.77 ] },
    name: "Central Park",
    category : "Park"
    },
    {
    loc: { type: "Point", coordinates: [ -73.88, 40.78 ] },
    name: "La Guardia Airport",
    category: "Airport"
    },
    {
    loc: { type: "Point", coordinates: [ -1.83, 51.18 ] },
    name: "Stonehenge",
    category : "Monument"
    }
    ] )

    Los valores en el campo loc son puntos GeoJSON.

  2. Para consultar datos de ubicación con el operador $near, debes crear un índice geoespacial en el campo que contiene los datos de ubicación.

    Crea un índice 2dsphere en el campo loc:

    db.places.createIndex( { "loc": "2dsphere" } )

Utiliza $near para query la colección. La siguiente $near query devuelve documentos que tienen un loc campo a una distancia de 5000 metros de un punto GeoJSON ubicado en [ -73.92, 40.78 ]:

db.places.find( {
loc: {
$near: {
$geometry: {
type: "Point",
coordinates: [ -73.92, 40.78 ]
},
$maxDistance : 5000
}
}
} )

Salida:

[
{
_id: ObjectId("63f7c3b15e5eefbdfef81cab"),
loc: { type: 'Point', coordinates: [ -73.88, 40.78 ] },
name: 'La Guardia Airport',
category: 'Airport'
},
{
_id: ObjectId("63f7c3b15e5eefbdfef81caa"),
loc: { type: 'Point', coordinates: [ -73.97, 40.77 ] },
name: 'Central Park',
category: 'Park'
}
]

Los resultados se ordenan por distancia desde el punto consultado, de más cercano a más lejano.