consultas avanzadas mongodb geolocation geospatial mongodb-query geojson

consultas avanzadas mongodb



Búsqueda/consulta de límites de geolocalización de Mongodb (1)

Tengo un documento contiene una lista de "casillas" de ubicación (área cuadrada). Cada cuadro está representado por 2 puntos (abajo a la izquierda o al suroeste, arriba a la derecha o al noreste).

Documento, por ejemplo:

{ locations: [ [[bottom,left],[top,right]], [[bottom,left],[top,right]], [[bottom,left],[top,right]] ] }

Estoy usando el índice 2d para esos puntos de límites.

Mi entrada es un punto de ubicación específico [x, y] y quiero buscar todos los documentos que tienen en la lista un cuadro en el que se encuentra este punto.

¿Hay algún operador geoespacial que pueda usar para hacer eso? ¿Cómo escribo esta consulta?


Puede usar el operador de caja, ver: http://docs.mongodb.org/manual/reference/operator/query/box/#op._S_box con el siguiente ejemplo tomado directamente de esa página:

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

Vale la pena señalar que el índice 2d se considera heredado. Si puede convertir a usar GeoJSON y un índice de 2dsphere, puede usar el operador $ gewithin: ver

http://docs.mongodb.org/manual/reference/operator/query/geoWithin/#op._S_geoWithin

GeoJSON tiene una serie de otros beneficios, entre los cuales, el hecho de que las aplicaciones de mapas web como OpenLayers o Leaflet lo transmiten y digieren fácilmente.