Você pode criar um índice do MongoDB Vector Search em uma visualização para transformar documentos e collections de forma que você possa indexar parcialmente uma collection, oferecer suporte a tipos ou modelos de dados incompatíveis e muito mais.
Os exemplos a seguir usam o banco de dados de amostra sample_mflix.
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.
Requisitos
Você deve usar o MongoDB 8.0 ou superior.
No MongoDB v8.0+:
Use a interface do usuário do Atlas ou a API de administração do Atlas para criar índices do MongoDB Vector Search em visualizações.
Execute as queries do MongoDB Vector Search na collection de origem. Consulte o índice do MongoDB Vector Search que foi criado na visualização. Essas queries retornam os documentos originais conforme aparecem na coleção de origem.
No MongoDB v8.1+, você também pode:
Use
mongoshe métodos de Driver,db.collection.createSearchIndex(),db.collection.updateSearchIndex(),db.collection.dropSearchIndex()e$listSearchIndexespara criar e gerenciar índices de Vector Search do MongoDB em visualizações.Execute as queries do MongoDB Vector Search no View.
Para editar uma visualização, você deve ter uma função de Usuário administrador e usar o comando de banco de dados collMod.
Limitações
O MongoDB Vector Search oferece suporte a visualizações com os seguintes estágios:
Os nomes de índice devem ser únicos em uma coleção de origem e em todas as suas visualizações.
A Vector Search do MongoDB não suporta definições de
$randvisualização com operadores que produzem resultados dinâmicos, como a variável de sistema $$USER_ROLES e o operador de agregação.As queries do MongoDB Vector Search retornam os documentos originais conforme aparecem na coleção de origem.
Exemplo: filtrar documentos
Para criar uma visualização, você deve ter o privilégio createCollection.
Você pode filtrar documentos para criar índices parciais em uma coleção. O exemplo a seguir cria uma View na coleção sample_mflix.embedded_movies para que apenas os documentos que possuam um campo de incorporação de vetor sejam indexados.
Considerações de desempenho
Transformações de exibição altamente complexas podem aumentar o tempo de indexação e query. Isso ocorre porque o mongod deve ler a definição de visualização quando filtra e transforma as entradas de oplog durante a indexação (sincronização inicial e replicação de estado estável) e quando aplica essas transformações aos documentos retornados no momento da query.
Considere criar uma visualização materializada para evitar carga extra de replicação no Atlas. Você também pode consultar a coleção de origem diretamente para evitar a latência de consulta a partir da transformação de visualização.
Solução de problemas
Índices mudam para FAILED
Os índices mudam para o status FAILED nos seguintes cenários:
Você cria um índice em uma visualização incompatível com o MongoDB Vector Search.
Você edita uma visualização de uma forma que não atende aos requisitos de compatibilidade da Vector Search do MongoDB .
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.
Índices mudam para STALE
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á paraREADYdepois que você resolver o documento ou alterar a definição de visualização para que ela não falhe mais. QuandoSTALE, 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á paraREADYapó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.
Erro: $search é válido apenas como o primeiro estágio de um pipeline
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.
Processo de índice
Quando você cria um índice do MongoDB Vector Search em uma visualização, o processo mongot executa as mesmas tarefas de quando você cria um índice do MongoDB Vector Search em uma collection regular. O processo do mongot:
Cria índices de Vector Search MongoDB com base nas regras na definição de índice para a coleção.
Monitora change streams para o estado atual dos documentos e índices para as collections para as quais você definiu os índices da MongoDB Vector Search .
Processa as queries do MongoDB Vector Search e retorna os IDs dos documento e outros metadados da pesquisa dos documentos correspondentes para
mongod, que então faz uma pesquisa completa do documento e retorna os resultados ao cliente.
Quando você cria um índice do MongoDB pesquisa vetorial em uma Visualização, a definição de Visualização é aplicada durante a Etapa 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.
Saiba mais
Para saber mais sobre visualizações, consulte Visualizações.
Para criar um índice do MongoDB Search em uma visualização, consulte Usar visualizações com o MongoDB Search.