“文档” 菜单
文档首页
/
MongoDB Manual
/ /

视图

在此页面上

  • 用例
  • 创建和管理视图
  • 与按需物化视图的对比
  • 行为
  • 访问控制

MongoDB 视图是只读可查询对象,其内容由其他集合或视图上的聚合管道定义。

MongoDB 不会在磁盘保存视图内容。视图内容将在客户端查询视图时按需计算得出。

注意

消歧

本页讨论标准视图。有关按需物化视图的讨论,请参阅按需物化视图。

要了解不同视图类型之间的区别,请参阅 与按需物化视图的比较

您可以使用视图执行以下操作:

要了解如何创建和管理视图,请参阅以下资源:

MongoDB 提供两种不同的视图类型:标准视图按需物化视图。这两种视图类型都可以返回聚合管道的结果。

  • 标准视图在您读取视图时计算得出,并且不会在磁盘中存储。

  • 按需物化视图存储在磁盘上并从磁盘读取。它们使用$merge$out阶段更新保存的数据。

标准视图使用底层集合的索引。因此,您无法直接在标准视图上创建、删除或重新构建索引,也无法获取视图上的索引列表。

您可以直接在按需物化视图上创建索引,因为它们存储在磁盘中。

按需物化视图的读取性能要优于标准视图,因为前者是从磁盘中读取,而不是作为查询的一部分通过计算得出。聚合管道越复杂,要聚合的数据量越大,这种性能优势就越明显。

以下各部分介绍了特定于视图的行为。

视图为只读。对视图进行写入操作会返回错误。

视图不维护集合更改的时间戳,也不支持时间点或快照读取隔离。

在执行阻塞排序和阻塞分组操作时,视图的基础聚合管道的内存限制为 100 MB 。

从 MongoDB 6开始。 0 ,需要超过100 MB 内存才能执行的管道阶段,默认会将临时文件写入磁盘。在 MongoDB 的早期版本中,您必须将{ allowDiskUse: true }传递给各个findaggregate命令才能启用此行为。

单个 findaggregate 命令可以通过以下任一方式覆盖 allowDiskUseByDefault 参数:

  • 使用 { allowDiskUse: true } 以允许在 allowDiskUseByDefault 设置为 false 时将临时文件写入磁盘

  • 使用 { allowDiskUse: false } 以禁止在 allowDiskUseByDefault 设置为 true 时将临时文件写入磁盘

时间序列集合是可写非物化视图。视图限制适用于时间序列集合。

有关详细信息,请参阅时间序列集合限制

警告

请勿尝试创建名称为system.profile的时间序列集合或视图,否则 MongoDB Server 会崩溃。

如果此部署强制执行身份验证db.createView() 则会要求经过身份验证的用户对该数据库具有 createCollection 特权。

但是,如果用户在数据库上具有 createCollection 权限,并在要创建的视图上具有 find 权限,则则该用户须具有以下额外权限:

  • find 源集合或视图上。

  • find位于pipeline中引用的任何其他集合或视图(如有)。

在数据库中具有 readWrite 内置角色的用户具有特权,可以运行列出的操作。创建具有所需角色的用户将该角色授予现有用户

← 数据库和集合