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
/ /
2dsphere

query a 2dsphere Index

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

La $geoWithin consultas de operadores para datos de ubicación encontrados dentro de un polígono GeoJSON. Tus datos de ubicación deben almacenarse en formato GeoJSON. Utiliza la siguiente sintaxis:

db.<collection>.find( { <location field> :
{ $geoWithin :
{ $geometry :
{ type : "Polygon" ,
coordinates : [ <coordinates> ]
} } } } )

El siguiente ejemplo selecciona todos los puntos y formas que existen completamente dentro de un polígono GeoJSON:

db.places.find( { loc :
{ $geoWithin :
{ $geometry :
{ type : "Polygon" ,
coordinates : [ [
[ 0 , 0 ] ,
[ 3 , 6 ] ,
[ 6 , 1 ] ,
[ 0 , 0 ]
] ]
} } } } )

El operador consulta las ubicaciones que intersecan un objeto GeoJSON especificado. Una ubicación interseca el objeto si la intersección no está vacía. Esto incluye los documentos que comparten un $geoIntersects borde.

El operador $geoIntersects utiliza la siguiente sintaxis:

db.<collection>.find( { <location field> :
{ $geoIntersects :
{ $geometry :
{ type : "<GeoJSON object type>" ,
coordinates : [ <coordinates> ]
} } } } )

El siguiente ejemplo utiliza $geoIntersects para seleccionar todos los puntos indexados y formas que se cruzan con el polígono definido por el arreglo coordinates.

db.places.find( { loc :
{ $geoIntersects :
{ $geometry :
{ type : "Polygon" ,
coordinates: [ [
[ 0 , 0 ] ,
[ 3 , 6 ] ,
[ 6 , 1 ] ,
[ 0 , 0 ]
] ]
} } } } )

Las queries de proximidad devuelven los puntos más cercanos al punto definido y ordenan los resultados por distancia. Una query de proximidad sobre datos GeoJSON requiere un índice 2dsphere.

Para query la proximidad a un punto GeoJSON, utilizá el operador $near. La distancia está en metros.

El $near utiliza la siguiente sintaxis:

db.<collection>.find( { <location field> :
{ $near :
{ $geometry :
{ type : "Point" ,
coordinates : [ <longitude> , <latitude> ] } ,
$maxDistance : <distance in meters>
} } } )

Para ejemplos, consulta $near.

Consulte también el $nearSphere operador y la $geoNear etapa de canalización de agregación.

Para seleccionar todas las coordenadas de la cuadrícula en un casquete esférico, utilice $geoWithin con el operador. Especifique una matriz que $centerSphere contenga:

  • Las coordenadas de cuadrícula del punto central del círculo

  • El radio del círculo se mide en radianes. Para calcular los radianes, consulta Calcular distancia utilizando geometría esférica.

Utiliza la siguiente sintaxis:

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

El siguiente ejemplo query las coordenadas de la cuadrícula y devuelve todos los documentos dentro de un radio de 10 millas de longitud 88 W y latitud 30 N. El ejemplo convierte la distancia, 10 millas, en radianes dividiendo por el radio ecuatorial aproximado de la Tierra, que es de 3963,2 millas:

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

Volver

2dsphere

En esta página