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
          }
       }
   }
)