2018 年 9 月 18 日,由 Robert Gravelle 撰写
在关系数据库中,视图是由查询定义的可搜索数据子集。视图有时被称为“虚拟表”,因为它们不存储数据,但可以像表一样被查询。MongoDB 最近在版本 3.4 中引入了视图。在今天的文章中,我们将学习如何使用 Navicat for MongoDB GUI 管理和开发工具在 MongoDB 中创建视图。
打开视图对象列表
可以使用下列两种方法从 Navicat 主窗口打开视图对象列表:
点击主工具栏中的“视图”命令按钮。
在数据库对象树中选择“视图”对象。
Navicat 视图设计器
视图设计器是一个专门的Navicat for MongoDB 工具,用于创建和编辑视图。你可以通过对象选项卡工具栏中的“新建视图”按钮打开它:
你还可以右击(在 macOS 上使用 Ctrl+点击)数据库对象树中的“视图”对象,然后从弹出菜单中选择“新建视图”:
提示:你可以在对象选项卡中右单(在 macOS 上使用 Ctrl+点击)视图并从弹出菜单中选择“创建打开视图快捷方式”来创建视图快捷方式。此选项用于为你提供直接在 Navicat 主窗口中打开视图的便捷方式。
创建视图
在 MongoDB 中创建视图时,引擎会运行聚合(aggregation)。因此,创建视图需要我们指定一个集合或一个现有的视图。
我们将创建一个仅显示演员全名的视图。
在“常规”选项卡上,从“集合/查看”下拉列表中选择 actor 集合。
现在点击“管道”选项卡。它包含“运算符”下拉列表以及“表达式“文本字段。
MongoDB 具有许多用于构造表达式的运算符,以便在聚合管道阶段中使用这些表达式来构建视图。运算符表达式与带引数的函数类似。通常,这些表达式采用一组引数并具有以下形式:
{ : [ , ... ] }
我们需要从列表中选择运算符 $project。它将带有请求字段的文档传递到管道中的下一个阶段。指定的字段可以是输入文档中的现有字段或新计算的字段。
这个表达式取消“_id”字段并连接“actor”集合中的“first_name”和“last_name”字段。
{ _id: 0, full_name : { $concat: ["$first_name", ", ", "$last_name"] } }
你可以通过点击“脚本预览”选项卡查看 Navicat 生成的代码:
db.createView("Untitled","actor",[
{
$project: {
_id: 0,
"full_name": {
$concat: [
"$first_name",
", ",
"$last_name"
]
}
}
}
])
若要查看新视图,请点击“预览”按钮或“结果”选项卡:
保存视图后,Navicat 将运行上述“db.createView”命令。聚合管道保存在“system.views”集合中。对于每个创建的视图,新文档也会保存在“system.views”集合中。
预告
现在我们已经掌握了基础知识,在下一篇文章中,我们将学习集合。