$redact
¶根据文档本身中存储的信息限制文档的内容。
该$redact
阶段具有以下原型形式:
该参数可以是任何有效表达式,只要它解析为$$ DESCEND, $$ PRUNE或$$ KEEP系统变量即可。有关表达式的更多信息,请参见表达式。
系统变量 | 描述 |
---|---|
$$ DESCEND | $redact 返回当前文档级别的字段,不包括嵌入式文档。要将嵌入式文档和嵌入式文档包含在数组中,请将$cond
表达式应用于嵌入式文档,以确定对这些嵌入式文档的访问。 |
$$修剪 | $redact 在当前文档/嵌入文档级别排除所有字段,而无需进一步检查任何排除的字段。即使排除字段包含具有不同访问级别的嵌入式文档,这也适用。 |
$$ KEEP | $redact 返回或将所有字段保留在当前文档/嵌入式文档级别,而无需进一步检查此级别的字段。即使所包含的字段包含可能具有不同访问级别的嵌入式文档,这也适用。 |
本节中的示例使用db.collection.aggregate()
2.6版本的mongo
Shell中提供的
帮助程序。
一个forecasts
集合包含以下形式的文件,其中tags
字段列出该文档/嵌入文档级别不同的访问值; 即值
指定任一或可以访问的数据:[ "G", "STLW" ]
"G"
"STLW"
用户具有与任一标签获得的视图信息"STLW"
或
"G"
。要2014
对该用户使用年份对所有文档进行查询,请包括$redact
以下步骤:
聚合操作返回以下“已编辑”文档:
也可以看看
集合accounts
包含以下文档:
在此示例文档中,该level
字段确定查看数据所需的访问级别。
要对所有具有状态的文档运行查询,A
并
在级别排除文档/嵌入文档中包含的所有字段5
,请包括一个在该字段$redact
中指定系统变量的
阶段
:"$$PRUNE"
then
该$redact
阶段评估该level
字段以确定访问权限。如果该level
字段等于5
,则排除该级别的所有字段,即使被排除的字段包含可能具有不同level
值的嵌入式文档(例如该shipping_addr
字段)。
聚合操作返回以下“已编辑”文档:
结果集表明,该$redact
阶段cc
从整体上排除了该字段,包括shipping_addr
包含嵌入文档的level
字段的字段值等于3
和不等于的字段
5
。
也可以看看
实施字段级别修订,以为同一数据设置多种访问组合。