On this page本页内容
$redact
¶Restricts the contents of the documents based on information stored in the documents themselves.根据文档本身中存储的信息限制文档的内容。
The $redact
stage has the following prototype form:$redact
阶段具有以下原型形式:
The argument can be any valid expression as long as it resolves to $$DESCEND, $$PRUNE, or $$KEEP system variables. 参数可以是任何有效的表达式,只要它解析为$$DESCEND、$$PRUNE或$$KEEP系统变量。For more information on expressions, see Expressions.有关表达式的详细信息,请参阅表达式。
$$DESCEND |
$redact $cond expression to the embedded documents to determine access for these embedded documents.$cond 表达式应用于嵌入文档,以确定对这些嵌入文档的访问。 |
$$PRUNE |
$redact |
$$KEEP |
$redact |
The examples in this section use the 本节中的示例使用db.collection.aggregate()
helper provided in the 2.6 version of the mongo
shell.mongo
shell 2.6版本中提供的db.collection.aggregate()
帮助程序。
A forecasts
collection contains documents of the following form where the tags
field lists the different access values for that document/embedded document level; i.e. a value of [ "G", "STLW" ]
specifies either "G"
or "STLW"
can access the data:forecasts
集合包含以下形式的文档,其中tags
字段列出该文档/嵌入文档级别的不同访问值;亦即,[ "G", "STLW" ]
的值指定“G”或“STLW”可以访问数据:
A user has access to view information with either the tag 用户可以使用标签"STLW"
or "G"
. "STLW"
或"G"
查看信息。To run a query on all documents with year 要为此用户对2014年的所有文档运行查询,请包括2014
for this user, include a $redact
stage as in the following:$redact
阶段,如下所示:
The aggregation operation returns the following “redacted” document:聚合操作返回以下“修订”文档:
See also参阅
A collection accounts
contains the following document:accounts
集合包含以下文档:
In this example document, the 在此示例文档中,level
field determines the access level required to view the data.level
字段确定查看数据所需的访问级别。
To run a query on all documents with status 要对状态为A
and exclude all fields contained in a document/embedded document at level 5
, include a $redact
stage that specifies the system variable "$$PRUNE"
in the then
field:A
的所有文档运行查询并排除级别5
的文档/嵌入文档中包含的所有字段,请在then
字段中包含一个$redact
阶段,该阶段指定系统变量"$$PRUNE"
:
The $redact
stage evaluates the level
field to determine access. $redact
阶段评估级别字段以确定访问权限。If the 如果level
field equals 5
, then exclude all fields at that level, even if the excluded field contains embedded documents that may have different level
values, such as the shipping_addr
field.level
字段等于5
,则排除该级别的所有字段,即使排除的字段包含可能具有不同level
值的嵌入文档,例如shipping_addr
字段。
The aggregation operation returns the following “redacted” document:聚合操作返回以下“修订”文档:
The result set shows that the 结果集显示,$redact
stage excluded the field cc
as a whole, including the shipping_addr
field which contained embedded documents that had level
field values equal to 3
and not 5
.$redact
阶段将字段cc
作为一个整体排除在外,包括shipping_addr
字段,该字段包含级别字段值为3
而不是5
的嵌入文档。
See also参阅
Implement Field Level Redaction实现字段级修订 for steps to set up multiple combinations of access for the same data.用于为同一数据设置多个访问组合的步骤。