Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
2d

query a 2d Index

Las siguientes secciones describen consultas compatibles con el índice 2d.

Para seleccionar todos los legacy coordinate pairs encontrados dentro de una figura dada en una superficie plana, se debe utilizar la función $geoWithin operador junto con un operador de formas. Usa la siguiente sintaxis:

db.<collection>.find( { <location field> :
{ $geoWithin :
{ $box|$polygon|$center : <coordinates>
} } } )

Las siguientes consultas para documentos dentro de un rectángulo definido por [ 0 , 0 ] en la esquina inferior izquierda y por [ 100 , 100 ] en la esquina superior derecha.

db.places.find( { loc :
{ $geoWithin :
{ $box : [ [ 0 , 0 ] ,
[ 100 , 100 ] ]
} } } )

Las siguientes consultas para documentos que están dentro del círculo centrado en [ -74 , 40.74 ] y con un radio de 10:

db.places.find( { loc: { $geoWithin :
{ $center : [ [-74, 40.74 ] , 10 ]
} } } )

Para consultar la sintaxis y ejemplos para cada forma, ve lo siguiente:

  • $box

  • $polygon

  • $center (define un círculo)

MongoDB admite queries esféricas rudimentarias en índices planos 2d por razones heredadas. En general, los cálculos esféricos deben utilizar un índice 2dsphere, como se describe en 2dsphere Indexes.

Para consultar legacy coordinate pairs en una "cúpula esférica" sobre una esfera, utiliza $geoWithin con el operador $centerSphere. Especifica un arreglo que contenga:

Utiliza la siguiente sintaxis:

db.<collection>.find( { <location field> :
{ $geoWithin :
{ $centerSphere : [ [ <x>, <y> ] , <radius> ] }
} } )

La siguiente consulta de ejemplo devuelve todos los documentos dentro de un radio de 10 millas de longitud 88 W y latitud 30 N. El ejemplo convierte la distancia a radianes dividiendo la distancia entre el radio ecuatorial aproximado de la Tierra, 3963,2 millas:

db.<collection>.find( { loc : { $geoWithin :
{ $centerSphere :
[ [ 88 , 30 ] , 10 / 3963.2 ]
} } } )

Las legacy coordinate pairs más cercanos al punto definido y ordenan los resultados por distancia. Utiliza cualquiera de los operadores $near. El operador requiere un índice de 2d.

El operador $near utiliza la siguiente sintaxis:

db.<collection>.find( { <location field> :
{ $near : [ <x> , <y> ]
} } )

Para ejemplos, consulta $near.

No se puede usar un índice 2d para devolver una coincidencia exacta de un par de coordenadas. Utiliza un índice escalar, ascendente o descendente, en un campo que almacene coordenadas para devolver coincidencias exactas.

En el siguiente ejemplo, la operación find() devolverá una coincidencia exacta en una ubicación si tienes un índice { 'loc': 1}:

db.<collection>.find( { loc: [ <x> , <y> ] } )

Esta consulta devolverá cualquier documento con el valor [ <x> , <y> ].

Volver

Crear un índice 2d

En esta página