Consulte um 2d
índice
Nesta página
As seções seguintes descrevem as consultas suportadas pelo índice 2d
.
ponto dentro de uma forma definida em uma superfície plana
Para selecionar todos legacy coordinate pairs encontrados em uma determinada forma em uma superfície plana, use o operador $geoWithin
junto com um operador de forma. Use a seguinte sintaxe:
db.<collection>.find( { <location field> : { $geoWithin : { $box|$polygon|$center : <coordinates> } } } )
A query a seguir para documento dentro de um retângulo definido por [ 0
, 0 ]
no canto inferior esquerdo e por [ 100 , 100 ]
no canto superior direito.
db.places.find( { loc : { $geoWithin : { $box : [ [ 0 , 0 ] , [ 100 , 100 ] ] } } } )
As seguintes queries de documentos que estão dentro do círculo centralizado em [ -74 , 40.74 ]
e com um raio de 10
:
db.places.find( { loc: { $geoWithin : { $center : [ [-74, 40.74 ] , 10 ] } } } )
Para sintaxe e exemplos para cada forma, consulte o seguinte:
ponto dentro de um círculo definido em uma esfera
O MongoDB suporta query esféricas Rudimentares em índices 2d
planos por motivos de legado. Em geral, os cálculos esféricos devem utilizar um índice 2dsphere
, como descrito em 2dsphere
Índices.
Para query de legacy coordinate pairs em uma "tamanho esférico" em uma esfera, use $geoWithin
com o operador $centerSphere
. Especifique uma matriz que contenha:
As coordenadas de grade do ponto central do círculo
O raio do círculo em radianos. Para calcular radianos, consulte Calcular distância usando geometria esférica.
Use a seguinte sintaxe:
db.<collection>.find( { <location field> : { $geoWithin : { $centerSphere : [ [ <x>, <y> ] , <radius> ] } } } )
A query de exemplo a seguir retorna todos os documentos em um raio de 10 milhas da longitude 88 W
e da latitude 30 N
. O exemplo converte a distância em radianos dividindo a distância pelo raio equatorial aproximado da Terra, 3963,2 milhas:
db.<collection>.find( { loc : { $geoWithin : { $centerSphere : [ [ 88 , 30 ] , 10 / 3963.2 ] } } } )
Proximidade de um ponto em uma superfície plana
As query de proximidade retornam os legacy coordinate pairs mais próximas do ponto definido e classificam os resultados por distância. Use o operador $near
. O operador exige um índice 2d
.
O operador $near
utiliza a seguinte sintaxe:
db.<collection>.find( { <location field> : { $near : [ <x> , <y> ] } } )
Para obter exemplos, consulte $near
.
Correspondências exatas em uma superfície plana
Você não pode utilizar um índice 2d
para retornar uma correspondência exata para um par de coordenadas. Use um índice escalar, crescente ou decrescente, em um campo que armazena coordenadas para retornar correspondências exatas.
No exemplo a seguir, a operação find()
retornará uma correspondência exata em um local se você tiver um índice {
'loc': 1}
:
db.<collection>.find( { loc: [ <x> , <y> ] } )
Esta query retornará quaisquer documentos com o valor de [ <x> , <y> ]
.