Visualizações
Nesta página
Uma visualização do MongoDB é um objeto consultável somente para leitura cujo conteúdo é definido por um aggregation pipeline em outras collections ou visualizações.
O MongoDB não persiste o conteúdo da visualização no disco. O conteúdo de uma visualização é computado sob-demanda quando um cliente consulta a visualização.
Observação
Desambiguação
Esta página discute visualizações padrão. Para discussões sobre visualizações materializadas on-demand, consulte Visualizações materializadas sob demanda.
Para entender as diferenças entre os tipos de visualização, consulte Comparação com Visualizações Materializadas On-Demand.
Você pode criar visualizações materializadas na interface do usuário para implantações hospedadas no MongoDB Atlas.
Casos de uso
Você pode usar visualizações para:
Crie uma visualização de uma collection de dados de funcionários para excluir qualquer informação de identificação pessoal (PII). Seu aplicativo pode a visualização em busca de dados de funcionários que não contenham nenhumaPII.
Crie uma visualização em uma collection de dados de sensores para adicionar campos e métricas computados. Seu aplicativo pode utilizar o
find operations
para query os dados calculados.Crie uma visualização que una duas collections contendo estoque e histórico de pedidos. Seu aplicativo pode consultar a visualização sem gerenciar ou o pipeline subjacente.
Criar e gerenciar visualizações
Para saber como criar e gerenciar visualizações, consulte os seguintes recursos:
Comparação com visualizações materializadas on-demand
O MongoDB oferece dois tipos de visualização diferentes: visualizações padrão e visualizações materializadas on-demand. Ambos os tipos de exibição retornam os resultados de um aggregation pipeline.
As visualizações padrão são calculadas quando você lê a visualização e não são armazenadas no disco.
As visualizações materializadas sob demanda são armazenadas e lidas no disco. Eles usam um
$merge
ou$out
estágio para atualizar os dados salvos.
Índices
As visualizações padrão usam os índices da coleta subjacente. Como resultado , você não pode criar, eliminar ou reconstruir índices diretamente em uma visualização , nem obter uma lista de índices na visualização.
Você pode criar índices diretamente em visualizações materializadas sob demanda porque eles são armazenados em disco.
Desempenho
As visualizações materializadas sob demanda fornecem melhor desempenho de leitura do que as visualizações porque são lidas do disco em vez de computadas como partes da consulta. Esse benefício de desempenho aumenta com base na complexidade do pipeline e no tamanho dos dados que estão sendo agregados.
Comportamento
As seções a seguir descrevem o comportamento específico das visualizações.
Somente leitura
As visualizações são somente leitura. As operações de gravação nas visualizações retornam um erro.
Isolamento de snapshot
As visualizações não mantêm carimbos de data/hora de alterações na collection e não oferecem suporte ao isolamento de leitura point-in-time ou de snapshot.
Ver pipelines
O aggregation pipeline subjacente da visualização está sujeito ao limite de memória de 100 megabytes para ordenador bloqueante e operações de grupo bloqueante.
A partir do MongoDB 6.0, estágios de pipeline que exigem mais de 100 megabytes de memória para executar arquivos temporários de gravação em disco por padrão. Em versões anteriores do MongoDB, você deve passar { allowDiskUse: true }
para find
individuais e comandos aggregate
para habilitar esse comportamento.
Somente find
e aggregate
comandos podem substituir o parâmetro allowDiskUseByDefault
por um ou outro:
Usando
{ allowDiskUse: true }
para permitir a gravação de arquivos temporários no disco quandoallowDiskUseByDefault
estiver definido comofalse
Usando
{ allowDiskUse: false }
para proibir a gravação de arquivos temporários no disco quandoallowDiskUseByDefault
estiver definido comotrue
Coleções de Time Series
Coleções de séries temporais são visualizações não materializadas graváveis. As limitações das visualizações se aplicam às coleções de séries temporais. Para obter mais informações, consulte Limitações das Coleções de séries temporais.
Você não pode criar uma visualização a partir de um namespace de collection de série temporal (ou seja, uma collection prefixada com
system.buckets
).
Aviso
Não tente criar uma coleção de séries temporais ou visualizar com o nome system.profile
. MongoDB 6.3 e versões posteriores retornam um erro IllegalOperation
se você tentar fazê-lo. Versões anteriores do MongoDB falham.
Controle de acesso
Se o sistema impuser autenticação, db.createView()
exigirá que o usuário autenticado tenha o privilégio createCollection
no banco de dados.
No entanto, se o usuário tiver createCollection
no banco de dados e find
na visualização a ser criada, ele também deverá ter as seguintes permissões adicionais:
find
na collection ou visualização de origem.find
em quaisquer outras collections ou visualizações referenciadas nopipeline
, se houver.
Um usuário com a role embutida readWrite
no banco de dados tem os privilégios exigidos para executar as operações listadas. Criar um usuário com a role necessária ou conceder a role a um usuário existente