Menu Docs
Página inicial do Docs
/ /

Use visualizações com pesquisa MongoDB

Você pode criar um índice do MongoDB Search em uma visualização para transformar documentos e coleções. Isso permite indexar parcialmente uma coleção, oferecer suporte a tipos de dados ou modelos de dados incompatíveis e muito mais.

Os exemplos a seguir usam os bancos de dados sample_mflix e sample_airbnb de exemplo.

Observação

Desambiguação

Esta página explora visualizações padrão. Para saber mais sobre visualizações materializadas sob demanda, consulte Visualizações materializadas sob demanda.

Para aprender sobre as diferenças entre os tipos de visualização, consulte Comparação com visualizações materializadas sob demanda.

Você deve usar o MongoDB 8.0 ou superior.

Para editar uma visualização, você deve ter uma função de Usuário administrador e usar o comando de banco de dados collMod.

  • Para recuperar o documento transformado, use a opção storedSource .

Para criar uma visualização, sua função deve ter o privilégio createCollection.

Os exemplos a seguir demonstram como criar uma visualização, indexar parcialmente os documentos e executar queries na visualização usando o índice.

O exemplo a seguir atualiza a visualização movies_ReleasedAfter2000 do MongoDB para filmes anteriores a 2000.

db.runCommand(
{
collMod: "movies_ReleasedAfter2000",
viewOn: "movies",
"pipeline": [
{
$match: {
$expr: {
$lt: [
"$released",
ISODate("2000-01-01T00")
]
}
}
}
]
}
)

Depois que você executa esse comando, o MongoDB Search detecta automaticamente a alteração na definição da visualização e executa a reindexação sem tempo de inatividade.

O exemplo a seguir retorna os pipelines na visualização movies_ReleasedAfter2000.

db.getCollectionInfos({ name: "movies_ReleasedAfter2000" })[0].options.pipeline
[
{
'$match': {
'$expr': { '$gt': [ '$released', ISODate('2000-01-01T00:00:00.000Z') ] }
}
}
]

Transformações de exibição altamente complexas podem levar a um desempenho mais lento quando o Atlas lê a exibição para filtrar e transformar a collection de origem. Nesse cenário, considere a criação de uma visualização materializada para evitar carga de replicação adicional no Atlas. Para evitar a latência de query causada pela transformação de exibição, você pode fazer a query na collection de origem diretamente para recuperar os documentos originais.

Os índices mudam para o status FAILED nos seguintes cenários:

  • Você cria um índice em uma visualização que é incompatível com a pesquisa do MongoDB .

  • Você edita uma visualização de uma forma que não atende aos requisitos de compatibilidade da MongoDB Search.

  • Você remove ou altera a coleção de origem de uma visualização.

    Por exemplo, se uma visualização for criada sobre outra visualização e você alterar a fonte da visualização pai para outra coleção.

    Observação

    Essa limitação também se aplica se uma visualização for descendente de outras visualizações. Por exemplo, você não pode alterar ou remover a coleção de origem da qual todos os descendentes se originam.

Os índices mudam para o status STALE nos seguintes cenários:

Aviso

Se o pipeline de agregação definido na sua visualização for incompatível com os documentos da coleção, a replicação de pesquisa falhará. Por exemplo, se uma expressão $toDouble atuar em um campo de documento que contém uma array, a replicação falha. Certifique-se de que sua visualização funcione com todos os documentos na coleção sem erros.

  • Se a definição da visualização causar uma falha de agregação enquanto um índice for READY, o índice se tornará STALE. O índice retornará para READY depois que você resolver o documento ou alterar a definição de visualização para que ela não falhe mais. Quando STALE, o índice permanece consultável. Se o índice cair do oplog, uma reconstrução do índice será acionada.

  • Se a definição de visualização causar uma falha no pipeline de agregação enquanto o índice estiver BUILDING, a construção do índice ficará travada até que você corrija o documento. O índice retornará para READY após você resolver o documento ou modificar a definição de exibição para que não falhe mais.

Você pode visualizar os status do índice na IU do Atlas na página de detalhes do status do índice.

Esse erro aparece quando você faz query de uma visualização usando uma versão do MongoDB anterior a 8.1.

  • Se você usa uma versão do MongoDB anterior a 8.0, recomendamos que atualize para 8.1+ para consultar a visualização diretamente. Você pode atualizar para 8.0 para consultar a coleção de origem.

  • Se você usar o MongoDB 8.0, deverá consultar o índice de visualização em relação à collection de origem. Por exemplo, execute .aggregate() na collection em vez de na visualização.

Quando você cria um índice do MongoDB Search em uma visualização, o processo mongot executa as mesmas tarefas de quando você cria um índice do MongoDB Search em uma collection regular. O processo do mongot:

  1. Cria índices de pesquisa do MongoDB com base nas regras na index definition para a collection.

  2. Monitora change streams para o estado atual dos documentos e índices para as collections para as quais você definiu os índices de pesquisa do MongoDB .

  3. Processa queries do MongoDB Search e retorna os IDs dos documento e outros metadados da pesquisa para os documentos correspondentes para mongod, que então faz uma pesquisa completa do documento e retorna os resultados ao cliente.

Quando você cria um índice de pesquisa do MongoDB em uma Visualização, a definição da Visualização é aplicada durante as Etapas 1 e 2, e os documentos transformados são indexados com base na definição do índice de pesquisa e, em seguida, armazenados em disco.

Para saber mais sobre visualizações, consulte Visualizações.

Para criar um índice do MongoDB Vector Search em uma visualização, consulte Usar visualizações com o MongoDB Vector Search.

Voltar

Múltiplas coleções