Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Consulte um 2d índice

Nesta página

  • ponto dentro de uma forma definida em uma superfície plana
  • ponto dentro de um círculo definido em uma esfera
  • Proximidade de um ponto em uma superfície plana
  • Correspondências exatas em uma superfície plana

As seções seguintes descrevem as consultas suportadas pelo índice 2d .

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:

  • $box

  • $polygon

  • $center (define um círculo)

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:

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 ]
} } } )

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.

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> ].

Voltar

Crie um índice 2d