Docs 菜单

Docs 主页开发应用程序MongoDB Manual

db.createView()

在此页面上

  • 语法
  • 举例
  • 行为
db.createView()

注意

消歧

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

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

将指定的聚合管道应用于源集合或视图后,创建一个视图。视图仅充当只读集合,且会在读取操作期间按需进行计算。必须在与源集合相同的数据库中创建视图。MongoDB 会对作为底层聚合管道其中一部分的视图执行读取操作。

视图定义 pipeline 不能包含 $out$merge 阶段。这一限制也适用于嵌入式管道,例如在 $lookup$facet 阶段中使用的管道。

db.createView 通过以下语法实现:

db.createView(<view>, <source>, <pipeline>, <collation>)

该方法具有以下参数:

范围
类型
说明
view
字符串
待创建的视图的名称。
source
字符串
要从中创建视图的源集合或视图的名称。该名称不包括数据库名称,意味着与要创建的视图是同一个数据库;它不是集合或视图的完整命名空间。您必须在与源集合相同的数据库中创建视图。
pipeline
阵列

聚合管道阶段组成的数组。 db.createView()通过将指定的pipeline应用于source集合或视图来创建视图。

视图定义 pipeline 不能包含 $out$merge 阶段。这一限制也适用于嵌入式管道,例如在 $lookup$facet 阶段中使用的管道。

视图定义是公开的;即视图上的 db.getCollectionInfos()explain 操作将包括定义视图的管道。因此,应避免在视图定义中直接引用敏感字段和值。

collation
文档

可选。 指定视图的默认排序规则

排序规则允许用户为字符串比较指定特定于语言的规则,例如字母大小写和重音符号规则。

如果底层 source 是一个集合,则视图不会继承该集合的排序规则设置。

如果未指定排序规则,视图的默认排序规则则为“简易”二进制比较排序规则。

如果底层 source 为其他视图,该视图则须指定相同的排序规则设置。

排序规则选项的语法如下:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

指定排序规则时,locale 字段为必填字段;所有其他排序规则字段均为可选字段。有关字段的说明,请参阅排序规则文档

db.createView() 方法会封装以下 create 命令操作:

db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )

重要

视图名称包含在集合列表输出中

列出集合的操作,例如 db.getCollectionInfos()db.getCollectionNames(),在其输出中包含视图。

视图定义是公开的;即视图上的 db.getCollectionInfos()explain 操作将包括定义视图的管道。因此,应避免在视图定义中直接引用敏感字段和值。

要查看创建视图的示例,请参阅以下页面:

要查看视图的行为详情,请参阅行为。

← db.createCollection()

在此页面上