2017-06-30 124 views
0

在Mongo環境中,將數據嵌入到文檔中是有益的。Mongo DB存儲引用

因此,例如一個員工文件:

{ 
    { 
     userid: 'someid', 
     username: 'user1' 
     isManager: true, 
     subordinates: [ 
      { 
        userid: 'anotherid', 
        username: 'user2', 
        isManager: false 
      } 
     ], 
     officeLocation: { 
      officeId: 'someofficeid', 
      officeName: 'Some Office' 
     } 
    }, 
    { 
      userid: 'anotherid', 
      username: 'user2', 
      isManager: false, 
      officeLocation: { 
      officeId: 'someotherofficeid', 
      officeName: 'Some Other Office' 
      } 
    } 
} 

和Office文檔:

{ 
    { 
      officeid: 'someofficeid', 
      officeName: 'Some Office' 
    }, 
    { 
      officeid: 'someotherofficeid', 
      officeName: 'Some Other Office' 
    } 
} 

所以讓我們假設有人在公司決定,他們不喜歡這個名字Some Other Office他們想要將其更改爲Some Cool Office

當他們在辦公室文檔中進行更改時,我們如何知道要更新員工文檔中的所有嵌入式Some Other Office

似乎每次您從一個文檔中取出一段數據並將其嵌入到另一個文檔中的對象中,這兩個文檔之間的鏈接就會斷開,然後您必須編寫單獨的查詢來更新所有數據您嵌入該對象的不同位置。

我喜歡嵌入式文檔而不是存儲引用的想法,但沒有某種雙向數據綁定,在更新信息時似乎不切實際。

有沒有什麼方法可以用兩種方式綁定數據,還是有更簡單的方法來建模我的數據?

感謝

回答

0

這remainds我對傳統的RDBMS系統,當你的模型規範化/反規範化的信息。我不確定綁定,但是,如果您需要「單一真實」來獲取信息,更好的方法是不要將信息存儲在兩個不同的地方。因此,就您的情況而言,將Office信息存儲到單獨的文檔中並僅通過Id鏈接它可能會更好。