2016-12-06 66 views
0
root: { 
    dir: { 
    subDir: { 
     subSubDir: { 
     ... 
     }, 
     ... 
    }, 
    subDir_2: { 
     ... 
    } 
    }, 
    dir_2: { 
    ... 
    }, 
    ... 
} 

假设用户想要限制对subDir及其所有内容的访问。现在,另一个用户尝试访问subSubDir。我想所有这些都应该用自定义逻辑来完成:我会将新属性添加到受限节点中,如access: 'noOne'MongoDB中的嵌套访问权限

那么,anotherUser的查询逻辑怎么样呢?例如“检查每个父母节点中是否存在access属性”?这看起来不太好,特别是如果有10层或更多层的嵌套。给每个孩子添加access属性看起来更糟糕,因为那里可能会有数十万个节点。

什么是正确的方式来实现这与MongoDB?

回答

0

甲MongoDB的解掉框的将是使用$redact。您可以限制基于存储在文档中的字段中的数据。因此,您可以通过比较不同文档级别的访问字段来控制访问。

您可以将用户建模为包含所有访问级别,或者可以将它们设置为访问级别和文档级别对。

当用户请求特定文档时,您可以比较文档的级别与该文档级别的用户访问。