Docs Menu
Docs Home
/ /
/ / /

Búsqueda geoespacial

Para admitir consultas geoespaciales, MongoDB proporciona índices geoespaciales y operadores de consultas geoespaciales.

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

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

  • A test.restaurants Colección rellenada con documentos del restaurants.json archivo en los activos de documentación de GitHub.

  • Las siguientes declaraciones 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 Subscriber personalizadas, que se describen en la Guíade implementación de suscriptores personalizados de muestra.

Primero, conéctese a una implementación de MongoDB, luego declare y defina las instancias MongoDatabase y MongoCollection.

El siguiente código se conecta a una implementación independiente 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 obtener más información sobre cómo conectarse a implementaciones de MongoDB, consulte el tutorial Conectarse a MongoDB.

Para crear un índice 2dsphere, utilice 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" de la colección restaurants:

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

MongoDB ofrece varios operadores de consulta geoespacial. Para facilitar la creación de filtros de consulta geoespacial, el controlador 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 GeoJSON Point especificada, 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

Consulta de texto

En esta página