$near (Perto, Ordenado por Distância)
Última atualização: 2026-10-09
$near (Perto, Ordenado por Distância)
$near retorna documentos geoespaciais ordenados por distância de um ponto, em ordem crescente. `{ loc: { $near: { $geometry: { type: 'Point', coordinates: [lng, lat] }, $maxDistance: 1000 } } }`. Exige um índice 2dsphere ou 2d e não pode ser combinado com outro $near ou $nearSphere na mesma consulta.
| Categoria | Geoespacial |
|---|---|
| Versão do MongoDB | 2.4+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ <campo de localização>: { $near: { $geometry: <Point>, $maxDistance: <metros> } } }
⚙️ Parâmetros
| campo de posição | O campo que armazena a localização. |
|---|---|
| geometria Point | Um GeoJSON Point com [longitude, latitude]. |
| maxDistance | Opcional; distância máxima em metros. |
Retorno:Cursor dos documentos correspondentes (crescente por distância)
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $near: lojas a até 1000 m do ponto
db.stores.find({
loc: { $near: {
$geometry: { type: 'Point', coordinates: [-73.97, 40.75] },
$maxDistance: 1000
} }
})
Saída:
// Retorna lojas a até 1000 m, ordenadas por distância crescente
📌 Notas
- Os resultados são ordenados automaticamente por distância; nenhum sort é necessário
- Exige um índice 2dsphere (GeoJSON) ou 2d (pares de coordenadas)
- $maxDistance é medido em metros (GeoJSON)
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO resultado de $near já vem ordenado?
ASim, em ordem crescente por distância — nenhum sort extra é necessário.
QUm índice é obrigatório para $near?
ASim, um índice 2dsphere ou 2d, caso contrário gera erro.
QQuando devo escolher $near em vez de $geoWithin?
AEscolha $near para ordenação por distância; $geoWithin apenas para contenção.