Mongo DB存储参考

时间:2017-06-30 13:17:15

标签: mongodb data-modeling database

在Mongo环境中,将数据嵌入文档中是有益的。

所以例如一份员工文件:

{
    {
         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'
          }
     }
}

办公室文件:

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

因此,我们假设公司中的某个人决定不喜欢名称Some Other Office,他们希望将其更改为Some Cool Office

当他们在office文档中进行更改时,我们如何知道更新员工文档中的所有嵌入式Some Other Office

似乎每次从一个文档中获取一段数据并将其嵌入到另一个文档中的对象中时,两者之间的链接就会被破坏,然后您必须编写单独的查询以更新所有文档中的数据嵌入该对象的不同点。

我喜欢嵌入式文档而不是存储引用的想法,但是如果没有某种双向数据绑定,在更新信息时似乎是不切实际的。

我有什么方法可以通过两种方式绑定数据,还是有更简单的方法来建模我的数据?

由于

1 个答案:

答案 0 :(得分:0)

当您对信息进行规范化/非规范化建模时,它会使我重新认识传统的RDBMS系统。我不确定绑定,但是,如果你需要"单一的真实"对于信息,更好的方法是永远不要将信息存储在两个不同的地方。因此,在您的情况下,最好将Office信息存储到单独的文档中,然后通过Id链接它。