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 dentro de una forma en una superficie plana

Para query datos de ubicación dentro de una forma especificada en una superficie plana, utiliza el operador $geoWithin. Para usar $geoWithin con datos que aparecen en una superficie plana, debes usar 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:

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.