【问题标题】:Referencing inside embedded documents in Mongoid在 Mongoid 中引用内嵌文档
【发布时间】:2013-01-22 17:01:53
【问题描述】:

我想获得一些有关进行 MongoDB 数据设计的反馈。我以前从未真正使用过它,所以如果我的设计看起来很疯狂,请告诉我。

我对用户和用户执行的活动有一个概念。用户和他们执行的活动都需要有一个地址,并且他们执行的活动是该用户专有的。由于活动永远不会重叠,因此地址也不应该重叠。

我的初始数据结构如下所示:

User : {
  # User data,
  address : {
    # address data
  },
  address : {
    # address data,
    home : true
  },
  activity : {
    # activity data,
    _address_id: #referenced address within user
  },
  activity : {
    # activity data,
    _address_id: #referenced address within user
  },
}

假设该活动可以在家中进行。

有没有更好的方法来做到这一点?我应该在活动和用户中嵌入地址吗?我应该从用户模型中完全删除它吗?

这一切都在使用 Mongoid 的 Rails 应用程序中结合在一起。

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid


    【解决方案1】:

    您的数据结构非常好——面向文档的数据库就是这样使用的。您不应该在每个活动中重复地址,因为您最终会浪费空间。

    User : {
      # User data,
      address_<id> : {
        # address data
      },
      address_<id> : {
        # address data,
        home : true
      },
    
      activity : {
        # activity data,
        _address_id: #referenced address within user
      },
      activity : {
        # activity data,
        _address_id: #referenced address within user
      },
    }
    

    您只需要注意两件事:
    1. 不要为单个活动检索整个文档
    2.确保文件不超过最大大小(或重新编译)

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多