Menu Docs
Página inicial do Docs
/
Manual do banco de dados
/ / /

Restrições de Índice Geoespacial

Os índices 2d e 2dsphere são índices geoespaciais. Os índices geoespaciais têm estas restrições:

2índices d não oferecem suporte à opção de agrupamento, apenas à comparação binária. A comparação binária compara o valor numérico Unicode de cada caractere em cada string e não leva em conta letras maiúsculas e minúsculas ou acentos.

Para criar um índice 2d em uma collection que tem um agrupamento não simples, você deve especificar explicitamente { collation: { locale: "simple" } } ao criar o índice.

Por exemplo, pense em uma coleção chamada collationTest com um agrupamento de { locale: "en" }:

db.createCollection(
"collationTest",
{
collation: { locale: "en" }
}
)

Para criar um índice 2D na coleção collationTest , você deve especificar { collation: { locale: "simple" } }. Este comando cria um índice 2D no campo loc:

db.collationTest.createIndex(
{
loc: "2d"
},
{
collation: { locale: "simple" }
}
)

Os índices geoespaciais não podem cobrir uma query.

Não é possível usar um índice geoespacial como uma chave fragmentada. No entanto, você pode criar um índice geoespacial em uma coleção fragmentada usando um campo diferente como a chave fragmentada.

Se sua coleção tiver vários índices geoespaciais, ao executar o estágio de pipeline $geoNear, você deverá especificar a opção $geoNear key. A opção key especifica qual índice usar para permitir a query.

Um campo indexado com um índice 2dsphere deve conter dados de geometria. Os dados de geometria podem ser:

Você não pode:

  • Insira um documento com dados não geométricos em um campo indexado com um índice dsphere 2 .

  • Crie um índice de esfera 2em um campo que contém dados não geométricos.

Quando você cria um índice dsphere2, o mongod mapeia formas GeoJSON para uma representação interna. A representação interna resultante pode ser uma grande array de valores.

A configuração indexMaxNumGeneratedKeysPerDocument limita o número máximo de chaves geradas para um único documento para evitar erros de falta de memória. Se uma operação exigir mais chaves do que o parâmetro indexMaxNumGeneratedKeysPerDocument especifica, a operação falhará.

Por padrão, o servidor permite até 100,000 chaves de índice por documento. Para permitir mais chaves de índice, aumente o valor indexMaxNumGeneratedKeysPerDocument.

Um índice 2d não pode melhorar o desempenho de correspondências exatas em um par de coordenadas.

Por exemplo, considere uma collection contacts com estes documentos:

db.contacts.insertMany( [
{
name: "Evander Otylia",
phone: "202-555-0193",
address: [ 55.5, 42.3 ]
},
{
name: "Georgine Lestaw",
phone: "714-555-0107",
address: [ -74, 44.74 ]
}
] )

Um índice 2d no campo address não melhora o desempenho da seguinte query:

db.contacts.find( { address: [ 55.5, 42.3 ] } )

Para melhorar o desempenho dessa consulta, crie um índice ascendente ou descendente no campo address:

db.contacts.createIndex( { address: 1 } )

Voltar

Calcular para radianos

Nesta página