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

假設用戶想要限制對subDir及其所有內容的訪問。現在,另一個用戶嘗試訪問subSubDir。我想所有這些都應該用自定義邏輯來完成:我會將新屬性添加到受限節點中,如access: 'noOne'MongoDB中的嵌套訪問權限

那麼,anotherUser的查詢邏輯怎麼樣呢?例如「檢查每個父母節點中是否存在access屬性」?這看起來不太好,特別是如果有10層或更多層的嵌套。給每個孩子添加access屬性看起來更糟糕,因爲那裏可能會有數十萬個節點。

什麼是正確的方式來實現這與MongoDB?

回答

0

甲MongoDB的解掉框的將是使用$redact。您可以限制基於存儲在文檔中的字段中的數據。因此,您可以通過比較不同文檔級別的訪問字段來控制訪問。

您可以將用戶建模爲包含所有訪問級別,或者可以將它們設置爲訪問級別和文檔級別對。

當用戶請求特定文檔時,您可以比較文檔的級別與該文檔級別的用戶訪問。