Este capítulo apresenta uma das funções de consulta geoespacial do MongoDB, que é a consulta de dados do documento com base na distância.
Cenários de aplicação: procurar lojas próximas e encontrar pessoas próximas.
Tutorial Pré-requisito
Formato de Armazenamento de Dados Geoespaciais do MongoDB
Os pré-requisitos para consultar dados com base na distância são os seguintes:
- Cada dado do documento contém um campo que armazena dados de coordenadas, por exemplo: o campo
localização
armazena as coordenadas de uma loja. - Crie um índice espacial 2dsphere ou 2d.
O Operador $near
O MongoDB usa o operador $near para consultar dados do documento com base na distância.
Formato:
{
<campo de localização>: { // Campo que armazena dados de coordenadas
$near: {
$geometry: { // Define as coordenadas de referência para comparação
type: "Point" ,
coordinates: [ longitude , latitude ]
},
$maxDistance: distância máxima, em metros,
$minDistance: distância mínima, em metros
}
}
}
Nota: Os dados retornados pela consulta $near são classificados do mais próximo ao mais distante.
Exemplo
Suponha que a coleção shop
armazene dados de lojas, onde o campo localização
armazena as coordenadas de cada loja. A consulta a seguir encontra a loja mais próxima de mim (distância mínima de 1000 metros, distância máxima de 5000 metros).
db.shop.find(
{
localização:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, // Minhas coordenadas
$minDistance: 1000, // Distância mínima
$maxDistance: 5000 // Distância máxima
}
}
}
)