---
title: "Consultas Geográficas con MongoDb"
canonical: "https://onesaitplatform-es.refined.site/space/DOC/2215921906/Consultas%20Geogr%C3%A1ficas%20con%20MongoDb"
format: markdown
---
A continuación, se va a mostrar cómo realizar una consulta geográfica sobre una ontología dentro de Onesait Platform. Para ello, en primer lugar, debe existir una ontología con un campo de tipo Geometry-point donde se almacene la ubicación. Para este ejemplo se ha creado una ontología denominada **pubsOntology** donde se va a almacenar la ubicación de diferentes bares en el campo *location*.

![image](media://874984fe-0f91-49b0-9c01-d1166e593e98)

Para consultar cuál es el bar más cercano a una ubicación en concreto el primer paso sería indicar a MongoDb que el campo donde se está almacenando la ubicación (en este caso *location*) sigue la estructura GeoJSON. Esto se consigue invocando el comando createIndex() sobre el campo donde se esté almacenando la ubicación, y que se ha definido previamente como tipo Geometry-point.

![image](media://82486587-406a-4618-8cc8-cfd5559f5e94)

El siguiente paso sería formular una query de tipo find donde se indique que se quiere conocer el punto más cercano a una ubicación en concreto. En la siguiente imagen se ha representado (a partir de un visor creado desde [plataforma](https://onesaitplatform.atlassian.net/wiki/spaces/OP/pages/45809698)) los tres pubs que hay registrados (pub01, pub02, pub03), y en un circulo los puntos donde se va a consultar el pub más cercano.

![image](media://e6f87c13-e45b-4434-b948-62b3cdcc51e4)

En el caso del circulo número uno la consulta sería:

```javascript
db.pubsOntology.find({ 'pubsOntology.location': 

{$near: {$geometry: {type: "Point",coordinates:[-1.130500,37.987087]},}}})
```

El resultado es un listado de bares ordenado de mayor cercanía a menor:

![image](media://cb715c33-2a37-4e32-bfc1-29b09916bdb1)


Como era de esperar, el pub más cercano sería el Pub02, seguido del Pub01, y el Pub03. Si ahora cambiamos la ubicación de la consulta al punto 2 el resultado será diferente:

![image](media://98212342-8c8f-4863-9673-f5f28963853c)

Como se puede observar, en este caso el pub más cercano sería el Pub03.