Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java
/

Atlas Searchgeoespacial

Nesta página

  • Pré-requisitos
  • Conecte-se a um MongoDB deployment
  • Crie o índice dsphere 2
  • Query para localizações próximas a um ponto GeoJSON

Para suportar queries geoespaciais, MongoDB fornece índices geoespaciais e operadores de consulta geoespacial.

Para saber mais sobre como executar queries geoespaciais, consulte Queries geoespaciais no manual do servidor.

Você deve configurar os seguintes componentes para executar os exemplos de código neste guia:

  • Uma test.restaurants coleção preenchida com documentos do restaurants.json arquivo nos ativos de documentação do Github.

  • As seguintes declarações de importação:

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

Este guia usa implementações personalizadas de Subscriber , que são descritas no guia Amostra de implementações personalizadas de assinantes .

Primeiro, conecte a um MongoDB deployment e, em seguida, declare e defina as instâncias MongoDatabase e MongoCollection .

O código a seguir se conecta a uma MongoDB deployment standalone em execução em localhost na porta 27017. Em seguida, define a variável database para fazer referência ao banco de dados test e a variável collection para fazer referência à coleção restaurants :

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

Para saber mais sobre como se conectar a sistemas do MongoDB, consulte o tutorial Conectar ao MongoDB .

Para criar um índice 2dsphere , utilize o auxiliar Indexes.geo2dsphere() para criar uma especificação para o índice 2dsphere . Passe a especificação para o método MongoCollection.createIndex() para criar o índice.

O exemplo seguinte cria um índice 2dsphere no campo "contact.location" na coleção restaurants :

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

O MongoDB fornece vários operadores de query geoespacial. Para facilitar a criação de filtros de consulta geoespacial, o driver fornece a classe Filters e o pacote com.mongodb.client.model.geojson .

O exemplo a seguir retorna documentos que estão a pelo menos 1000 metros e no máximo a 5000 metros da instância GeoJSON Point especificada, classificados do mais próximo para o mais distante:

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

Voltar

Pesquisa de texto