Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
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 $geoIntersects consulta las ubicaciones que se intersectan con un objeto GeoJSON determinado. Una ubicación intersecta el objeto si la intersección no está vacía. Esto incluye documentos que tengan un borde compartido.

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 las $geoNear etapas del pipeline de agregación.

Para seleccionar todas las coordenadas de la cuadrícula en una "capa esférica" en una esfera, utiliza $geoWithin con el operador $centerSphere. Especifique un arreglo que 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