Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json MongoDB 2.6中使用$redact操作符的字段级访问_Json_Mongodb_Security - Fatal编程技术网

Json MongoDB 2.6中使用$redact操作符的字段级访问

Json MongoDB 2.6中使用$redact操作符的字段级访问,json,mongodb,security,Json,Mongodb,Security,我有一个带有嵌套子节的文档结构,我只想检索与传入的标记匹配的子节。下面是json结构 { “_id”:1, “标题”:“文档格式”, “creationDate”:2014年, “标签”:[ “GLTW”, “SP”, “传统知识” ], “各款”:[ { “副标题”:“第1节:概述”, “标签”:[ “是”, “GLTW” ], “内容”:“第1节:这是第1节的内容。”, “各款”:[ { “副标题”:“第1.1节:分析”, “标签”:[ “SP” ], “内容”:“第1.1节:这是第1.1节

我有一个带有嵌套子节的文档结构,我只想检索与传入的标记匹配的子节。下面是json结构

{
“_id”:1,
“标题”:“文档格式”,
“creationDate”:2014年,
“标签”:[
“GLTW”,
“SP”,
“传统知识”
],
“各款”:[
{
“副标题”:“第1节:概述”,
“标签”:[
“是”,
“GLTW”
],
“内容”:“第1节:这是第1节的内容。”,
“各款”:[
{
“副标题”:“第1.1节:分析”,
“标签”:[
“SP”
],
“内容”:“第1.1节:这是第1.1节的内容。”,
“各款”:[
{
“副标题”:“第1.1.1节:分析”,
“标签”:[
“传统知识”
],
“内容”:“第1.1.1节:这是第1.1.1节的内容。”
}
]
}
]
}
] }
以下是我尝试的查询,但它不起作用:

var userAccess=[“TK”];
db.redact.aggregate([
{$match:{creationDate:2014},
{$redact:
{
$cond:
{
如果:{$gt:[{$size:{$setIntersection:[“$tags”,userAccess]},0]},
然后:“$$下降”,
其他:“$$PRUNE”
}
}
}    ] )
上面的查询不返回任何内容


但是,如果我将userAccess更改为
var userAccess=[“TK”、“SP”、“GLTW”],工作正常。如何仅获取与userAccess匹配的子部分?在本例中,仅获取userAccess=[“TK”]。任何帮助都将不胜感激。

具有“TK”的人看不到标记为“SI”、“GLTW”的文档,因此正在对其进行修剪(正确)查看标记为“TK”的小节的唯一方法是设置userAccess,如下所示。var userAccess=[“SI”、“SP”、“TK”];但是我不想看到SI和SP,只是标记了“TK”的子部分,我想这不是正确的方法。对-因为TK在SP部分内,而SP部分在SI部分内,所以您需要权限才能看到这三个部分。也就是说,如果您没有文档的权限,甚至无法“知道”您可以看到它的子文档。感谢您的输入。还有一个问题,假设有多个子部分,我是否可以在$redact上添加额外的筛选器以仅获取子部分1?类似于$redact上面的$slice?