页首Html代码

视图

本节内容

  • 创建视图
  • 特性
  • 删除视图

自3.4版本,MongoDB支持从已存在的集合视图创建只读的视图

创建视图

在MongoDB3.4中创建或定义一个视图:

viewOn 和 pipeline 选项已经存在于 create 命令中(查看:db.createCollection 帮助)

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

你也可以为视图指定默认的校验规则

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

新版本中,mongodb 提供了一个新的 mongo shell 命令 创建视图 db.createView():

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

特性

视图展现了如下特性:

  • 视图是只读的,对视图的写操作是错误的
  • 视图能够使用源集合的索引
  • 视图考虑了分片如果它们的源集合是分片的。因此,你不能在分片视图的 字段上使用 $lookup $graphLookup 操作符
  • .视图是读取操作期间按需进行计算的,同时,对视图执行的读操作也作为底层集合管道的一部分,因此 视图不支持如下的操作

    db.collection.mapReduce(),

    $text 操作,

    geoNear命令 和$geoNear。

  • find()操作符,作用在视图上时,不支持如下的字段影射操作

    $

    $eleMatch

    $slice

    $meta

  • 如果使用聚合管道创建视图并抑制_id 字段,那视图中的文档将没有_id 字段。
  • 不能对视图进行重命名。
  • 视图上的字符串比较使用视图默认的校对规则,尝试修改或者覆盖视图的默认校对规则的操作是失败的,也是一种错误的操作。

对于集合的操作,如 db.getCollectionInfos() 和db.getCollectionNames() ,在输出中也会包含视图

提示:

视图的定义是公共的,因此db.getCollectionInfos()和 explain 操作 会包含视图中定义的管道信息。因此 避免在视图中定义敏感的字段和值

删除视图

在视图上使用 db.collection.drop() 删除视图。

 

posted @ 2017-03-12 20:59  赵雨霏  阅读(211)  评论(0编辑  收藏  举报
页脚Html代码