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 para ubicaciones delimitadas por un polígono

Puedes query los datos de ubicación dentro del perímetro de un polígono especificado.

Para query datos de ubicación dentro de un perímetro, utilice el operador $geoWithin y especifique las coordenadas de los vértices del polígono:

db.<collection>.find( {
<location field> : {
$geoWithin : {
$geometry : {
type : "Polygon",
coordinates : [ <coordinates> ]
}
}
}
} )
  • Los valores en el campo que consultas con el operador $geoWithin deben estar en formato GeoJSON.

  • 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.

  • Cuando especificas el Polígono coordinates, la primera y la última coordenada del arreglo deben ser iguales. Esto cierra los límites del polígono.

  • $geoWithin no requiere un índice geoespacial. Sin embargo, un índice geoespacial mejora el rendimiento de las query. Solo el índice geoespacial 2dsphere admite $geoWithin. Para obtener más información, consulta Crea un índice 2dsphere.

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"
}
] )

Utiliza $geoWithin para query la colección. La siguiente $geoWithin query especifica un polígono con cuatro vértices (un rectángulo) y devuelve puntos dentro de ese polígono:

db.places.find( {
loc: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [ [
[ -73.95, 40.80 ],
[ -73.94, 40.79 ],
[ -73.97, 40.76 ],
[ -73.98, 40.76 ],
[ -73.95, 40.80 ]
] ]
}
}
}
} )

Salida:

[
{
_id: ObjectId("63a4a8d67348ebdcd0a061f0"),
loc: { type: 'Point', coordinates: [ -73.97, 40.77 ] },
name: 'Central Park',
category: 'Park'
}
]