5.3 $centerSphere

O operador $centerSphere do MongoDB define um círculo para uma consulta geoespacial que usa geometria esférica. A consulta retorna os documentos que estão dentro dos limites do círculo.

> // Exibir os títulos das páginas distantes a 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:
...         {$geoWithin:
...             { $centerSphere: [ [  -43.1885, -22.9066 ] , 0.2/6371 ] }
...         }
...     },
...     {title: 1, _id: 0}
... ).sort( {title: 1});
{ "title" : "A Aclamação" }
{ "title" : "Aclamação de Dom Pedro I Imperador do Brasil no Campo de Santa Anna no Rio de Janeiro" }
{ "title" : "As fontes em forma de Stella" }
{ "title" : "Campo de Santana" }
{ "title" : "Casamento da Princesa Dona Maria Teresa" }
{ "title" : "Jardim da Praça da República" }
{ "title" : "Monumentos da Cidade do Rio de Janeiro" }
{ "title" : "Palacete da Praça da Aclamação" }
{ "title" : "Parques e Áreas Verdes" }
{ "title" : "Praça da República" }
{ "title" : "Praça do Curro" }
{ "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:
...         {$geoWithin:
...             { $centerSphere: [ [  -43.1885, -22.9066 ] , 0.2/6371 ] }
...         }
...     },
...     {title: 1, _id: 0}
... ).sort( {title: 1});
{ "title" : "A Aclamação" }
{ "title" : "Aclamação de Dom Pedro I Imperador do Brasil no Campo de Santa Anna no Rio de Janeiro" }
{ "title" : "Campo de Santana" }
{ "title" : "Casamento da Princesa Dona Maria Teresa" }
{ "title" : "Jardim da Praça da República" }
{ "title" : "Palacete da Praça da Aclamação" }
{ "title" : "Praça da República" }
{ "title" : "Praça do Curro" }
>

A segunda consulta só retornou as páginas onde todo o objeto se encontra dentro dos limites do círculo, e não apenas um de seus pontos.

5. Consultas geoespaciais