Skip to content

Latest commit

 

History

History
69 lines (42 loc) · 5.81 KB

consultar-un-2dsphereindice.md

File metadata and controls

69 lines (42 loc) · 5.81 KB

Consultar un 2dsphereíndice

Las siguientes secciones describen las consultas admitidas por el 2dsphereíndice.

Objetos GeoJSON delimitados por un polígono

El $geoWithinoperador consulta los datos de ubicación que se encuentran dentro de un polígono GeoJSON. Los datos de su ubicación deben almacenarse en formato GeoJSON. Utilice 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 por completo dentro de un polígono GeoJSON:

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

Intersecciones de objetos GeoJSON

El $geoIntersectsoperador consulta las ubicaciones que se cruzan con un objeto GeoJSON específico. Una ubicación se cruza con el objeto si la intersección no está vacía. Esto incluye documentos que tienen un borde compartido.

El $geoIntersectsoperador usa la siguiente sintaxis:

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

El siguiente ejemplo se utiliza $geoIntersectspara seleccionar todos los puntos y formas indexados que se cruzan con el polígono definido por la coordinatesmatriz.

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

Proximidad a un punto GeoJSON

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

Para consultar la proximidad a un punto GeoJSON, use el $nearoperador. La distancia está en metros.

El $nearusa la siguiente sintaxis:

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

Para ver ejemplos, consulte $near.

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

Puntos dentro de un círculo definidos en una esfera

Para seleccionar todas las coordenadas de la cuadrícula en un "casquete esférico" en una esfera, utilice $geoWithincon el $centerSphereoperador. Especifique una matriz que contenga:

Utilice la siguiente sintaxis:

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

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

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