Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
/ / /

Búsqueda geoespacial

Para admitir queries geoespaciales, MongoDB proporciona índices geoespaciales y operadores del query geoespacial.

Para obtener más información sobre cómo realizar consultas geoespaciales, consulta Consultas geoespaciales en el manual del servidor.

Debe configurar los siguientes componentes para ejecutar los ejemplos de código en esta guía:

  • A test.restaurants colección poblada con documentos del archivo restaurants.json en la documentación activos GitHub.

  • Las siguientes instrucciones de importación:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoCollection;
import com.mongodb.reactivestreams.client.MongoDatabase;
import com.mongodb.client.model.geojson.*;
import com.mongodb.client.model.Indexes;
import com.mongodb.client.model.Filters;
import org.bson.Document;

Importante

Esta guía utiliza implementaciones personalizadas de Subscriber, que se describen en la Guía Muestra de implementaciones personalizadas de suscriptor.

En primer lugar, conéctate a una implementación de MongoDB y, a continuación, declara y define las instancias MongoDatabase y MongoCollection.

El código siguiente se conecta a una implementación autónoma de MongoDB que se ejecuta en localhost en el puerto 27017. Luego, define la variable database para referirse a la base de datos test y la variable collection para referirse a la colección restaurants:

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("restaurants");

Para aprender más sobre cómo conectar implementaciones de MongoDB, consulta el tutorial Conectar a MongoDB.

Para crear un índice 2dsphere, utiliza el asistente Indexes.geo2dsphere() para crear una especificación para el índice 2dsphere. Pase la especificación al método MongoCollection.createIndex() para crear el índice.

El siguiente ejemplo crea un índice 2dsphere en el campo "contact.location" en la colección restaurants:

MongoCollection<Document> collection = database.getCollection("restaurants");
collection.createIndex(Indexes.geo2dsphere("contact.location"))
.subscribe(new PrintSubscriber<String>());

MongoDB proporciona varios operadores del query geoespaciales. Para facilitar la creación de filtros de query geoespacial, el driver proporciona la clase Filters y el paquete com.mongodb.client.model.geojson.

El siguiente ejemplo devuelve documentos que estén al menos a 1000 metros y como máximo a 5000 metros de la instancia especificada de GeoJSON Point, ordenados del más cercano al más lejano:

Point refPoint = new Point(new Position(-73.9667, 40.78));
collection.find(Filters.near("contact.location", refPoint, 5000.0, 1000.0))
.subscribe(new PrintDocumentSubscriber());

Volver

Text query

En esta página