Docs Menu
Docs Home
/ /

Query para ubicaciones dentro de una forma en una superficie plana

Para query datos de ubicación dentro de una forma especificada en una superficie plana, use el $geoWithin operador. Para usar $geoWithin con datos que aparecen en una superficie plana, utiliza esta sintaxis:

db.<collection>.find( {
<location field> : {
$geoWithin : {
<shape operator> : <coordinates>
}
}
} )

Reemplaza estos valores para tu query:

Campo
Descripción

<collection>

La colección a query.

<location field>

El campo que contiene sus datos de ubicación. Para consultas en una superficie plana, tus datos deben almacenarse como legacy coordinate pairs.

<shape operator>

La forma en la que se debe query. Puedes especificar una de las siguientes formas:

  • $box

  • $polygon

  • $center (define un círculo)

El ejemplo en esta página utiliza el operador $box. Para ver ejemplos de query utilizando otras formas, consulta esas páginas de operadores.

<coordinates>

Las coordenadas que definen los bordes de la forma que se va a query. Cuando se utiliza con el operador $box, las coordenadas representan las esquinas inferior izquierda y superior derecha de un rectángulo.

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.

$geoWithin no requiere un índice geoespacial. Sin embargo, un índice geoespacial mejora el rendimiento de las query.

Crear la colección contacts:

db.contacts.insertMany( [
{
name: "Evander Otylia",
phone: "202-555-0193",
address: [ 55.5, 42.3 ]
},
{
name: "Georgine Lestaw",
phone: "714-555-0107",
address: [ -74, 44.74 ]
}
] )

El campo address contiene legacy coordinate pairs.

Utiliza $geoWithin para query la colección contacts. La siguiente $geoWithin query utiliza el operador $box para devolver documentos que aparecen dentro de un rectángulo especificado:

db.contacts.find( {
address: {
$geoWithin: {
$box: [ [ 49, 40 ], [ 60, 60 ] ]
}
}
} )

Salida:

[
{
_id: ObjectId("647e4e496cdaf4dc323ec92a"),
name: 'Evander Otylia',
phone: '202-555-0193',
address: [ 55.5, 42.3 ]
}
]

Los valores del operador $box representan las esquinas inferior izquierda y superior derecha del rectángulo que se va a query.

La $geoWithin query mostrada anteriormente devuelve documentos que están dentro de un rectángulo que tiene estos vértices:

  • [ 49, 40 ]

  • [ 49, 60 ]

  • [ 60, 60 ]

  • [ 60, 40 ]

Para aprender a utilizar el operador $geoWithin con otras formas, consulta estas páginas:

  • Para realizar una query dentro de un polígono, consulta $polygon.

  • Para query dentro de un círculo, consulte $center.

Volver

Punto en una superficie

En esta página