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

Criar um ÍndiceHaystack

Importante

Removido no MongoDB 5.0

MongoDB 5.0 remove o índice geoHaystack obsoleto e o comando geoSearch . Em vez disso, use um 2d index com $geoNear ou um dos geospatial query operators compatíveis.

Atualizar sua instância MongoDB para 5.0 e configurar featureCompatibilityVersion para 5.0 excluirá quaisquer índices geoHaystack preexistentes.

Um índice haystack deve fazer referência a dois campos: o campo de localização e um segundo campo. O segundo campo é usado para correspondências exatas. Os índices de haystack retornam documentos com base na localização e em uma correspondência exata em um único critério adicional. Esses índices não são necessariamente adequados para retornar os documentos mais próximos de um local específico.

Para construir um índice do palheiro, utilize a seguinte sintaxe:

db.coll.createIndex( { <location field> : "geoHaystack" ,
<additional field> : 1 } ,
{ bucketSize : <bucket value> } )

Para construir um índice haystack, você deve especificar a opção bucketSize ao criar o índice. Um bucketSize de 5 cria um índice que agrupa valores de localização que estão dentro 5 unidades da longitude e latitude especificadas. O bucketSize também determina a granularidade do índice. Você pode ajustar o parâmetro para a distribuição de seus dados para que, em geral, você pesquise somente regiões muito pequenas. As áreas definidas por buckets podem se sobrepor. Um documento pode existir em vários buckets.

Exemplo

Se você tiver uma collection com documentos que contenham campos semelhantes aos seguintes:

{ _id : 100, pos: { lng : 126.9, lat : 35.2 } , type : "restaurant"}
{ _id : 200, pos: { lng : 127.5, lat : 36.1 } , type : "restaurant"}
{ _id : 300, pos: { lng : 128.0, lat : 36.7 } , type : "national park"}

As operações a seguir criam um índice haystack com buckets que armazenam chaves dentro de 1 unidade de longitude ou latitude.

db.places.createIndex( { pos : "geoHaystack", type : 1 } ,
{ bucketSize : 1 } )

Esse índice armazena o documento com um campo _id que tem o valor 200 em dois buckets diferentes:

  • Em um bucket que inclui o documento onde o campo _id tem um valor de 100

  • Em um bucket que inclui o documento onde o campo _id tem um valor de 300

Para fazer query usando um índice haystack, use o comando geoSearch . Consulte Fazer uma query de um índice haystack.

Por padrão, as consultas que usam um índice do palheiro retornam 50 documento.

Voltar

geohaystack