2017-06-30 100 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链接它可能会更好。