Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Use visualizações com pesquisa MongoDB

Você pode criar um índice de pesquisa do MongoDB Search em uma Visualização para transformar documentos e coleções. Isso permite que você indexe parcialmente uma coleção, suporte tipos de dados ou modelos de dados incompatíveis, e mais.

The following examples use the sample_mflix and sample_airbnb sample databases.

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.

  • No MongoDB v8.0+:

    • Use a UI do Atlas ou a API de Administração do Atlas para criar índices do MongoDB Search nas visualizações.

    • Execute as queries do MongoDB Search na collection de origem. Consulte o índice do MongoDB 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:

  • No MongoDB v8.2+, você também pode:

To edit a View, you must have a User Admin role and use the collMod database command.

  • O MongoDB Search oferece suporte a visualizações com os seguintes estágios:

    You can use the $expr operator only within the $match stage.

  • Os nomes de índice devem ser únicos em uma coleção de origem e em todas as suas visualizações.

  • MongoDB Search doesn't support view definitions with operators that produce dynamic results, such as the $$USER_ROLES system variable and the $rand aggregation operator.

  • As queries do MongoDB Search retornam os documentos originais conforme aparecem na coleção de origem.

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

To create a View, your role must have the createCollection privilege.

Os exemplos a seguir mostram como criar uma visualização, criar um índice parcial e executar queries que usam o índice. Os exemplos consultam o índice executando o comando .aggregate na coleção de origem ou na visualização. O MongoDB Search suporta queries em visualizações diretamente somente no MongoDB v8.1 ou posterior.

Filtro de documentos para um índice parcial de uma coleção.

Você pode filtrar documentos para criar índices parciais em uma coleção. O exemplo a seguir cria uma visualização na coleção sample_mflix.movies para que você possa pesquisar apenas filmes lançados após 1° de janeiro de 2000.

Adicione ou modifique campos usando uma visualização.

O exemplo a seguir permite que você pesquise na coleção sample_airbnb.listingsAndReviews acomodações com base em um novo campo totalPrice, que é a soma dos campos price e cleaningFee. Além disso, como o MongoDB Search não oferece suporte para tipos Decimal128, os valores precisam ser transformados em Double.

Configure a indexação dinâmica para campos com padrões de nomeação usando regex.

To index fields matching a naming pattern, use a View to transform your data so that the fields to index are nested in a sub-document. This enables you to use dynamic mappings for the sub-document path so that you can automatically search all new fields with the suffix _type, without any changes to your index definition.

The following View named listings_SearchableTypes only matches field names that end with _type in the sample_airbnb.listingsAndReviews collection. Specifically, the $set stage adds a new field named searchable_types, which contains the filtered fields with the term _type in the field name. The $arrayToObject contains the filter input (entire document) and condition (regex match for _type).

Transforme tipos de campo não suportados em string para faceta nesses tipos de campo.

Para facetar tipos de campo não suportados, como booleano, objectId ou UUID, recomendamos transformar os valores para o tipo string.

O exemplo a seguir cria uma visualização no namespace sample_airbnb.listingsAndReviews para que você possa facetar no campo boolean de tipo host.host_is_superhost e no campo objectID de tipo _id.

Converter o tipo decimal128 para o tipo double.

Para pesquisar nos campos do tipo decimal128, recomendamos converter os valores para o tipo double.

O exemplo a seguir cria uma vista no namespace sample_airbnb.listingsAndReviews para adicionar um campo chamado totalPrice, que contém a soma do campo price e do campo cleaning_fee após converter os valores desses campos para double.

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') ] }
}
}
]

Highly complex view transformations can increase indexing and query time. This is because the mongod must read the view definition when it filters and transforms the oplog entries during indexing (initial sync and steady state replication), and when it applies those transformations to the returned documents at query-time.

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.

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.

To create a MongoDB Vector Search index on a View, see Use Views with MongoDB Vector Search.