Menu Docs
Página inicial do Docs
/ /

Consulta de locais próximos a um ponto em uma superfície plana

Você pode fazer query dos dados de localização que aparecem próximos a um ponto especificado em uma superfície plana.

Para consultar dados de localização próximos a um ponto especificado, utilize o operador $near :

db.<collection>.find( {
<location field> : {
$near : [ <longitude>, <latitude> ],
$maxDistance : <distance in meters>
}
} )
  • Ao especificar pares de coordenadas no operador $near , liste primeiro a longitude e, em seguida, a latitude.

    • Os valores de longitude válidos estão entre -180 e 180, ambos inclusos.

    • Os valores de latitude válidos estão entre -90 e 90, ambos inclusos.

  • Especifique a distância no campo $maxDistance em metros.

  1. Crie a coleção contacts:

    db.contacts.insertMany( [
    {
    name: "Evander Otylia",
    phone: "202-555-0193",
    address: [ 55.5, 42.3 ]
    },
    {
    name: "Georgine Lestaw",
    phone: "714-555-0107",
    address: [ -74, 44.74 ]
    }
    ] )

    O campo address contém pares de coordenadas legados.

  2. Para executar query de dados de localização com o operador $near , você deve criar um índice geoespacial no campo que contém os dados de localização.

    Criar um índice 2d no campo address :

    db.contacts.createIndex( { address: "2d" } )

Use $near para fazer a query da collection. A seguinte query $near retorna documentos que têm um campo address dentro de 50 metros do par de coordenadas [ -73.92, 40.78 ]:

db.contacts.find( {
address: {
$near: [ -73.92, 40.78 ],
$maxDistance : 50
}
} )

Saída:

[
{
_id: ObjectId("640a3dd9c639b6f094b00e89"),
name: 'Georgine Lestaw',
phone: '714-555-0107',
address: [ -74, 44.74 ]
}
]

Os resultados são classificados por distância do ponto de consulta , do mais próximo ao mais distante.

Voltar

Query

Nesta página