Docs Menu
Docs Home
/ /

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, utiliza el $geoWithin operador y especifica 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'
}
]

Volver

Query

En esta página