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.用于为同一数据设置多个访问组合的步骤。