Atlas Searchgeoespacial
Nesta página
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.
Pré-requisitos
Você deve configurar os seguintes componentes para executar os exemplos de código neste guia:
Uma
test.restaurants
coleção preenchida com documentos dorestaurants.json
arquivo nos ativos Github de documentação do .As seguintes declarações de importação:
import org.mongodb.scala._ import org.mongodb.scala.model.geojson._ import org.mongodb.scala.model.Indexes import org.mongodb.scala.model.Filters
Observação
Este guia usa as implicações do Observable
como abordadas no Quick Start Primary.
Conecte-se a um MongoDB deployment
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
:
val mongoClient: MongoClient = MongoClient() val database: MongoDatabase = mongoClient.getDatabase("test") val collection: MongoCollection[Document] = database.getCollection("restaurants")
Para saber mais sobre como se conectar a sistemas do MongoDB, consulte o tutorial Conectar ao MongoDB .
Criar um índice de 2dsphere
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 seguinte exemplo cria um índice 2dsphere
no campo "contact.location"
na coleção:
collection.createIndex(Indexes.geo2dsphere("contact.location")).printResults()
Query para localizações próximas a um ponto GeoJSON
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.0
metros e no máximo a 5000.0
metros da instância GeoJSON Point
especificada, classificados automaticamente do mais próximo para o mais distante:
val refPoint = Point(Position(-73.9667, 40.78)) collection.find(Filters.near("contact.location", refPoint, 5000.0, 1000.0)).printResults()