$redact
阶段可以根据文档本身存储的信息,限制输出整个文档或文档中的内容。
语法
{
$redact: <expression> }
使用
参数可以是任何有效的表达式,只要能被解析为$$DESCEND
、$$PRUNE
或 $$KEEP
系统变量即可。
$$DESCEND
$redact
返回当前文档级别的字段,不包括嵌入文档。若要包含嵌入文档和数组中的嵌入文档,需要对嵌入文档应用$cond
表达式,以确定这些嵌入文档的访问权限。
$$PRUNE
$redact
排除当前/嵌入文档级别的所有字段,无需进一步检查任何排除字段,即使排除的字段包含可能具有不同访问级别的嵌入文档。
$$KEEP
$redact
返回或保留当前/嵌入文档级别的所有字段,而无需进一步检查该级别的字段。即使包含的字段包含可能具有不同访问级别的嵌入文档。
举例
评估每个文档级别的访问权限
forecasts
集合包含以下形式的文档,其中tags
字段列出了该文档/嵌入式文档级别的不同访问值;例如,[ "G"、"STLW" ]
表示"G"
或"STLW"
可以访问数据:
{
_id: 1,
title: "123 Department Report",
tags: [ "G", "STLW" ],
year: 2014,
subsections: [
{
subtitle: "Section 1: Overview",
tags: [ "SI", "G" ],
content: "Section 1: This is the content of section 1."
},
{
subtitle: "Section 2: Analysis",
tags: [ "STLW" ],
content: