数据模型中的嵌入和引用 - mongodb

Embedded and references in a data model - mongodb

我想创建一个mongodb数据库,并使用嵌入式结构。例如,假设 persons 集合中每个文档的大小为 16MB。这意味着我无法在该人的集合中添加子文档 contacts。 1-在这种情况下我该怎么办? 2- 如果我创建联系人集合,则有义务引用此人。 我们可以在 mongodb 数据库中嵌入和引用结构吗?

谢谢。

{
    nom:'Kox', 
    prenom:'Karl', 
    gender:'M', 
    addres: 
        {
          rue: '123 Fake Street', 
          appt:108, 
          city:'mycity',
          zip_code:'GGG23'
        }, 
    class: 
        {
          name:'CLASS ONE', 
          group:'C', 
          section:'SECTION ONE' 
        }

}

MongoDB 的优势之一是灵活的架构。

您当然可以为某些个人文档嵌入联系人,为其他人引用联系人,或者为单个个人文档嵌入一些联系人并引用一些联系人。

一个可能的用途是嵌入最近或经常使用的联系人以便快速访问(类似于 per-person 缓存)和所有联系人可通过引用查找。

这个的自然扩展是,如果一个人的整个联系人列表适合个人文档,则永远不需要为该人进行单独的联系人查找。

权衡是:

引用方法允许联系人列表任意大,但除了人员查找之外还需要单独的联系人查找。

嵌入式方法只需要对人员和联系人进行 1 次查找,从而减少了数据库服务器的负载,但将人员 + 联系人列表的大小限制为 16MB。

混合 embedded/referenced 方法要求应用程序代码稍微复杂一些,但可以减少数据库服务器上的查询负载,同时仍然允许联系人列表非常大。