5.5 Geospatial query operator $nearSphere

The operator $nearSphere specifies a point for which a geospatial query returns the documents from nearest to farthest. MongoDB calculates distances for $nearSphere using spherical geometry.

> // Displays the titles of documents that are less than
> // 200 meters from the center of Praça da República.
> // (6371 km is the average radius of the earth)
> // (Coordinates in 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" }
>

Now the same query executed replacing the field coordinates by 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" }
>

The second query returned the same titles from the previous query, only changing the order of documents that have more than one coordinate.

5. Geospatial queries