Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

db.collection.updateSearchIndex()

Nesta página

  • Definição
  • Sintaxe
  • Campos de comando
  • Sintaxe de definição do índice de pesquisar
  • Comportamento
  • Controle de acesso
  • Exemplo
db.collection.updateSearchIndex()

Novidade na versão 7.0: (Disponível também a partir de 6.0.7)

Atualiza um índice existente do Atlas Search.

Importante

Esse comando só pode ser executado em uma implantação hospedada no MongoDB Atlas e requer uma camada do cluster Atlas de pelo menos M10.

Importante

Método mongosh

Esta página documenta um método mongosh . Esta não é a documentação para comandos de banco de dados ou drivers específicos de idioma, como Node.js.

Para o comando do banco de dados, consulte o comando updateSearchIndex.

Para drivers de API do MongoDB, consulte a documentação do driver MongoDB específica do idioma.

Para a documentação de shell legada do mongo, consulte a documentação para a versão correspondente do MongoDB Server:

mongo shell v4.4

Sintaxe do comando:

db.<collection>.updateSearchIndex(
<name>,
{
<definition>
}
)

updateSearchIndex() usa estes campos:

Campo
Tipo
necessidade
Descrição
name
string
Obrigatório
Nome do índice de pesquisa a ser atualizado.
definition
documento
Obrigatório
Documento que descreve a definição de índice atualizada. Para obter detalhes sobre a sintaxe definition , consulte Sintaxe de definição do índice de pesquisa.

A definição do índice de pesquisa utiliza os seguintes campos:

{
analyzer: "<analyzer-for-index>",
searchAnalyzer: "<analyzer-for-query>",
mappings: {
dynamic: <boolean>,
fields: { <field-definition> }
},
analyzers: [ <custom-analyzer> ],
storedSource: <boolean> | {
<stored-source-definition>
},
synonyms: [ {
name: "<synonym-mapping-name>",
source: {
collection: "<source-collection-name>"
},
analyzer: "<synonym-mapping-analyzer>"
} ]
}
Campo
Tipo
necessidade
Descrição
analyzer
string
Opcional

Especifica o analyzer para aplicar aos campos da string ao indexar.

Se você omitir este campo, o índice utilizará o analisador padrão.

searchAnalyzer
string
Opcional

Especifica o analyzer a ser aplicado ao texto de query antes que o texto seja pesquisado.

Se você omitir este campo, o índice utilizará o mesmo analisador especificado no campo analyzer .

Se você omitir os campos searchAnalyzer e analyzer , o índice utilizará o padrão .

mappings
objeto
Opcional
Especifica como indexar campos em caminhos diferentes para este índice.
mappings.dynamic
booleano
Opcional

Habilita ou desabilita o mapeamento de campo dinâmico para este índice.

Se configurado para true, o índice contém todos os campos contendo tipos de dados suportados.

Se definido como false, você deve especificar campos individuais para indexar usando mappings.fields.

Se omitido, o padrão é false.

mappings.fields
documento
Condicional

Necessário apenas se o mapeamento dinâmico estiver desabilitado.

Especifica os campos no índice. Para saber mais, consulte Como definir mapeamentos de campo.

analyzers
array
Opcional
Especifica os Analyzers customizados a serem usados neste índice.
storedSource
Opcional

Especifica os campos de documento a serem armazenados para queries realizadas usando a opção returnedStoredSource .

Você pode armazenar campos de todos os tipos de dados na Atlas Search. O valor storedSource pode ser um destes:

  • true, para armazenar todos os campos

  • false, para não armazenar nenhum campo

  • Um objeto que especifica os campos de include ou exclude a partir do armazenamento

Se omitido, o padrão é false.

Para saber mais, consulte Definir campos de origem armazenados no seu índice do Atlas Search.

synonyms
Opcional

Especifica mapeamentos de sinônimos para usar em seu índice. A configuração de sinônimos permite indexar e pesquisar palavras que tenham o mesmo significado ou um significado semelhante.

Para saber mais, consulte Definir mapeamentos de sinônimos em seu índice do Atlas Search.

updateSearchIndex() Atlas Triggers uma construção de índice com a nova definição de índice. Pode haver um atraso entre o momento em que você recebe uma resposta do comando e o momento em que o índice atualizado está pronto.

A definição de índice antiga ainda pode suportar query enquanto o novo índice está sendo criado. Depois que o novo índice terminar de ser criado, o índice antigo não poderá mais ser usado. Para ver o status dos seus índices de pesquisa, use o estágio de agregação $listSearchIndexes .

Se a sua implementação impõe controle de acesso, o usuário que executa o updateSearchIndex() deve ter a ação de privilégio updateSearchIndex no banco de dados ou collection:

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "updateSearchIndex" ]
}

Os papéis embutidos readWrite e restore fornecem o privilégio do updateSearchIndex . O exemplo a seguir concede a role readWrite no reconhecimento de data center qa :

db.grantRolesToUser(
"<user>",
[ { role: "readWrite", db: "qa" } ]
)

O exemplo a seguir cria um novo índice de pesquisa do Atlas Search e então atualiza este índice de pesquisa.

  1. Criar um índice de pesquisa denominado searchIndex01 na collection movies :

    db.movies.createSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "imdb.rating" ]
    }
    }
    )
  2. Atualize o índice searchIndex01 :

    db.movies.updateSearchIndex(
    "searchIndex01",
    {
    mappings: { dynamic: true },
    storedSource: {
    exclude: [ "movies" ]
    }
    }
    )
← db.collection.getSearchIndexes()