Optimization

MongoDB中隱私設置的模式設計

  • January 12, 2013

我有一組文件,它們周圍可以有各種隱私設置:

  1. 它們可以完成公開(任何註冊使用者)可以查看它們
  2. 只有關注您的人才能查看它們(此“關注者”數組儲存在每個使用者的文件中)
  3. 它們也可以對發布文件的人保密。
  4. 他們可以具有自定義隱私,允許您命名可以查看文件的個人使用者。此外,您可以允許使用者組也查看文件(例如,可能有一個名為“Sample Group”的組,其中有 20 個使用者。您可以允許該組查看磁貼。)

我不知道如何在 MongoDB 中有效地實現這個模式,並且希望深入了解實現這個模式的最佳實踐。

重要的是要記住,由於在 MongoDB 中有多種方法可以為給定的數據集設計模式,因此考慮您將從應用程序中進行的讀取和寫入類型至關重要。

假設您將查詢給定使用者可以看到的文件子集,您可能希望以一種能夠在單個查詢中查詢所有“可見”文件的方式來建構文件集合.

文件結構如:

{ _id: ...,
 public: true,
 groups: ['group1', 'group2',...],
 users: ['user1','user2',...],
}

如果您有使用者 X 所屬的組列表,您現在可以通過以下查詢查詢使用者 X 可見的所有文件:

db.documents.find( { $or : [
    { public : true },
    { users  : X },
    { groups : { $in : [list-of-X's-groups] } }
] } )

引用自:https://dba.stackexchange.com/questions/31465