db.createView()
db.createView()
将指定的聚合管道应用于源集合或视图后,创建一个视图。视图仅充当只读集合,且会在读取操作期间按需进行计算。必须在与源集合相同的数据库中创建视图。MongoDB 会对作为底层聚合管道其中一部分的视图执行读取操作。
视图定义
pipeline
不能包含$out
或$merge
阶段。这一限制也适用于嵌入式管道,例如在$lookup
或$facet
阶段中使用的管道。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
db.createView
通过以下语法实现:
db.createView(<view>, <source>, <pipeline>, <collation>)
该方法具有以下参数:
Parameter | 类型 | 说明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| 字符串 | 待创建的视图的名称。 | ||||||||||
| 字符串 | 要从中创建视图的源集合或视图的名称。该名称不包括数据库名称,意味着与要创建的视图是同一个数据库;它不是集合或视图的完整命名空间。您必须在与源集合相同的数据库中创建视图。 | ||||||||||
| 阵列 | 由聚合管道阶段组成的大量。 视图定义 视图定义是公开的;即视图上的 | ||||||||||
| 文档 | 可选。 指定视图的默认排序规则。 排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号规则。 如果底层 如果未指定排序规则,视图的默认排序规则则为“简易”二进制比较排序规则。 如果底层 排序规则选项的语法如下:
指定排序规则时, |
db.createView()
方法会封装以下 create
命令操作:
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )
重要
视图名称包含在集合列表输出中
列出集合的操作,例如 db.getCollectionInfos()
和 db.getCollectionNames()
,在其输出中包含视图。
视图定义是公开的;即视图上的 db.getCollectionInfos()
和 explain
操作将包括定义视图的管道。因此,应避免在视图定义中直接引用敏感字段和值。
示例
要查看创建视图的示例,请参阅以下页面:
行为
要查看视图的行为详情,请参阅行为。