O operador $nearSphere do MongoDB especifica o ponto para o qual a consulta geoespacial retorna os documentos do mais próximo ao mais distante. As distâncias são calculadas usando geometria esférica.
> // Exibir os títulos das páginas distantes menos
> // de 200 metros do centro da Praça da República.
> // (6371 km é o raio médio da terra)
> // (coordenadas em Longitude, Latitude)
> db.pages.find(
... { coordinates :
... { $nearSphere :
... [ -43.1885, -22.9066 ],
... $maxDistance: 0.2/6371 }
... },
... {title: 1, _id: 0}
... );
{ "title" : "Campo de Santana" }
{ "title" : "Jardim da Praça da República" }
{ "title" : "Praça do Curro" }
{ "title" : "Palacete da Praça da Aclamação" }
{ "title" : "Praça da República" }
{ "title" : "As fontes em forma de Stella" }
{ "title" : "Casamento da Princesa Dona Maria Teresa" }
{ "title" : "Aclamação de Dom Pedro I Imperador do Brasil no Campo de Santa Anna no Rio de Janeiro" }
{ "title" : "Parques e Áreas Verdes" }
{ "title" : "A Aclamação" }
{ "title" : "Monumentos da Cidade do Rio de Janeiro" }
{ "title" : "Rua Detrás do Hospício" }
{ "title" : "Rua Senhor dos Passos" }
{ "title" : "Rua da Alfândega" }
{ "title" : "Rua dos Ciganos" }
>
Veja agora a mesma consulta executada substituindo o campo coordinates pelo campo geometry:
> db.pages.find(
... { geometry :
... { $nearSphere :
... [ -43.1885, -22.9066 ],
... $maxDistance: 0.2/6371 }
... },
... {title: 1, _id: 0}
... );
{ "title" : "Campo de Santana" }
{ "title" : "Jardim da Praça da República" }
{ "title" : "As fontes em forma de Stella" }
{ "title" : "Praça do Curro" }
{ "title" : "Praça da República" }
{ "title" : "Palacete da Praça da Aclamação" }
{ "title" : "Parques e Áreas Verdes" }
{ "title" : "Casamento da Princesa Dona Maria Teresa" }
{ "title" : "A Aclamação" }
{ "title" : "Aclamação de Dom Pedro I Imperador do Brasil no Campo de Santa Anna no Rio de Janeiro" }
{ "title" : "Monumentos da Cidade do Rio de Janeiro" }
{ "title" : "Rua Detrás do Hospício" }
{ "title" : "Rua Senhor dos Passos" }
{ "title" : "Rua da Alfândega" }
{ "title" : "Rua dos Ciganos" }
>
A segunda consulta retornou os mesmos títulos da consulta anterior, só mudando a ordem dos documentos que têm a mesma coordenada.