Views

在本页面

Use Cases

Create and Manage Views

Comparison with On-Demand Materialized Views

Behavior

Access Control

MongoDB视图是一个只读可查询对象,其内容由其他集合或视图上的aggregation pipeline定义。

MongoDB不会将视图内容持久化到磁盘。视图的内容在客户端查询视图时按需计算。

**NOTE**
      `解疑`
             本页讨论标准视图。用于按需讨论实体化观点,参见see On-Demand Materialized Views        (https://www.mongodb.com/docs/v6.0/core/materialized-views/#std-label-manual-materialized-views)
                 为了理解视图类型之间的差异,参见Comparison with On-Demand Materialized Views()

用例

你可以使用视图来:

  • 在员工数据集合上创建一个视图,以排除任何个人身份信息(PII),那么应用程序可以查询不包含任何PII(个人身份信息)的员工数据视图。
  • 在传感器数据集合上创建视图,以添加计算字段和指标。 应用程序可以使用find operations查询计算数据。
  • 创建连接两个包含库存和订单历史记录的集合的视图。应用程序无需管理或理解底层管道就可以查询视图。

创建和管理视图

要了解如何创建和管理视图,请参见以下页面:

On-Demand物化视图对照

MongoDB提供两种不同的视图类型: standard viewson-demand materialized views. 这两种视图类型都从聚合管道返回结果。

  • standard views是在读取视图时计算的,不存储到磁盘中。
  • on-demand materialized views存储在磁盘上并从磁盘中读取。它们使用$merge $out阶段来更新保存的数据。

Indexes

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

可以直接在on-demand materialized views上创建索引,因为它们存储在磁盘上。

Performance

on-demand materialized views提供了比standard views更好的读取性能,因为它们是从磁盘读取的,而不是作为查询的一部分进行计算。 这种性能优势会随着管道的复杂性和聚合数据的大小而增加。

行为

下面几节描述特定于视图的行为。

Read Only

视图是只读的。对视图的写操作返回错误。

视图管道

视图的底层聚合管道受制于阻塞排序和阻塞组操作的100兆字节内存限制。

MongoDB 6.0开始,默认情况下需要100兆以上内存的管道阶段执行将临时文件写入磁盘。在MongoDB的早期版本中,必须将{allowDiskUse: true}传递给单独的查找和聚合命令来启用此行为。

单独的findaggregate命令可以覆盖allowDiskUseByDefault 参数:

  • allowdiskebydefault设置为false时,使用{allowDiskUse: true}允许将临时文件写入磁盘
  • allowdiskebydefault设置为true时,使用{allowDiskUse: false}禁止将临时文件写入磁盘

分片视图

如果视图的底层集合是分片的,则视图被认为是分片的。 在$lookup$graphLookup 操作中,不能为from字段指定一个分片视图。

时间序列集合

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

有关详细信息,请参见 Time Series Collection Limitations

访问控制

如果部署强制认证,db.createView() 要求经过身份验证的用户在数据库上拥有createCollection权限。

但是,如果用户在数据库中拥有createCollection,并且在视图中find 要创建的对象,则用户还必须具有以下附加权限:

  • find 在源集合或视图上
  • find 在管道中引用的任何其他集合或视图上(如果有的话)。

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

原文链接:https://www.mongodb.com/docs/v6.0/core/views/

译者:杨帅

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:25

results matching ""

    No results matching ""