Docs Menu
Docs Home
/ /

Vistas

Una vista MongoDB es un objeto consultable de solo lectura cuyo contenido está definido por un canalización de agregación en otras colecciones o vistas.

MongoDB no guarda el contenido de la vista en el disco. El contenido de una vista se calcula on-demand cuando un cliente consulta la vista.

Nota

Desambiguación

Esta página discute las vistas estándar. Para obtener más información sobre las vistas materializadas on-demand, consulte Vistas materializadas On-demand.

Para comprender las diferencias entre los tipos de vista, consulte Comparación con vistas materializadas bajo demanda.

Puedes crear vistas materializadas en la interfaz de usuario para despliegues alojados en MongoDB Atlas.

Puede usar vistas para:

Para aprender a crear y gestionar vistas, consulte los siguientes recursos:

MongoDB ofrece dos tipos diferentes de vistas: vistas estándar y vistas materializadas on-demand. Ambos tipos de vistas devuelven los resultados de una canalización de agregación.

  • Las vistas estándar se calculan cuando lees la vista y no se almacenan en el disco.

  • Las vistas materializadas on-demand se almacenan y se leen desde el disco. Utilizan una etapa $merge o una $out para actualizar los datos guardados.

Las vistas estándar utilizan los índices de la colección subyacente. Por lo tanto, no es posible crear, eliminar ni reconstruir índices directamente en una vista estándar, ni obtener una lista de índices en la vista.

Puede crear índices directamente en vistas materializadas a pedido porque se almacenan en el disco.

Las vistas materializadas on-demand ofrecen un mejor rendimiento de lectura que las vistas estándar porque se leen desde el disco en lugar de calcularse como parte de la query. Este beneficio en el rendimiento aumenta en función de la complejidad del pipeline y del tamaño de los datos que se están agregando.

Las siguientes secciones describen el comportamiento específico de las vistas.

Las vistas son de solo lectura. Las operaciones de guardar en las vistas devuelven un error.

Las vistas no mantienen marcas de tiempo de los cambios en la colección ni admiten el aislamiento de lectura en un punto específico o aislamiento de lectura de instantáneas.

La canalización de agregación subyacente de la vista está sujeta al límite de memoria de 100 megabytes para operaciones de ordenamiento y agrupamiento bloqueantes.

A partir de MongoDB 6.0, las etapas de la canalización que requieren más de 100 megabytes de memoria para ejecutarse escriben archivos temporales en el disco de forma predeterminada. Estos archivos temporales duran mientras se ejecuta la canalización y pueden afectar el espacio de almacenamiento de la instancia. En versiones anteriores de MongoDB, se debía pasar { allowDiskUse: true } a los comandos find y aggregate para habilitar este comportamiento.

Los comandos individuales find y aggregate pueden anular el parámetro allowDiskUseByDefault de las siguientes maneras:

  • Se utiliza { allowDiskUse: true } para permitir la escritura de archivos temporales en el disco cuando allowDiskUseByDefault se establece en false

  • Se utiliza { allowDiskUse: false } para prohibir la escritura de archivos temporales en el disco cuando allowDiskUseByDefault esté configurado en true

Nota

Para MongoDB Atlas, se recomienda configurar el escalado automático de almacenamiento para evitar que los queries de larga duración llenen el almacenamiento con archivos temporales.

Si su clúster de Atlas utiliza el escalado automático de almacenamiento, los archivos temporales pueden hacer que su clúster escale al siguiente nivel de almacenamiento.

  • Las colecciones de series de tiempo son vistas no materializadas que se pueden escribir. Las limitaciones para las vistas se aplican a las colecciones de series de tiempo. Para obtener más información, consulte las Limitaciones de la colección de series de tiempo.

  • No se puede crear una vista desde un espacio de nombres de colección de buckets de series de tiempo (es decir, una colección con el prefijo system.buckets).

Si la implementación aplica autenticación:

  • Para crear una vista, debes tener el privilegio createCollection en la base de datos donde se crea la vista. Además, si tienes el privilegio find en el namespace de la vista que deseas crear, también debes tener el privilegio find en los siguientes recursos:

    • La colección o vista de origen desde la cual se crea la nueva vista.

    • Cualquier colección o vista referenciada en el pipeline de vistas.

  • Para consultar una vista, debes tener el privilegio find en el namespace de la vista. No necesitas el privilegio find en la colección de origen ni en ningún namespace referenciado en la pipeline de vistas.

Un usuario con el rol readWrite incorporado en la base de datos tiene los privilegios necesarios para ejecutar las operaciones mencionadas. Para conceder los permisos necesarios, realiza una de las siguientes acciones:

Volver

Bases de datos y colecciones

En esta página