Docs Menu
Docs Home
/ /
2dsphere

Consultar una 2dsphere Index

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

El $geoWithin Consultas de operador para datos de ubicación dentro de un polígono GeoJSON. Los datos de 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 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 utiliza la siguiente $geoIntersects sintaxis:

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

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

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

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

Para consultar la proximidad a un punto GeoJSON, utilice el operador. La distancia se expresa en $near metros.

El $near utiliza la siguiente sintaxis:

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

Para ver ejemplos,$near consulte.

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 radianes, consulte Calcular distancias mediante geometría esférica.

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 W y latitud 30 N. El ejemplo convierte la distancia, 10 millas, a radianes dividiéndola entre el radio ecuatorial aproximado de la Tierra, 3963.2 millas:

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

Volver

2dsphere

En esta página