【发布时间】:2011-02-15 05:49:05
【问题描述】:
我最近通过使用 MongoMapper gem 开始在 Rails 上使用 MongoDB。我想知道是否有某种方法可以让类/对象/集合既是文档又是嵌入式文档。我希望同一个实体既可以包含/嵌入到其他文档中,也可以作为对象单独存在。
这可能吗?我是否以错误的方式解决这个问题?任何讨论/建议将不胜感激,因为现在网络上的资源似乎很少。
【问题讨论】:
-
一般的答案是否定的,但我认为您可能以错误的方式处理问题。你能准确地说出你想要做什么吗?
-
当然,我有两个实体:企业和个人。我希望企业将人员作为嵌入式文档。但是,我希望人们成为他们自己的文档,因为他们也有关联的实体。他们都有自己的展示页面——并且是独立的实体。但出于效率问题,我希望人们能够存储为企业的嵌入式文档。我知道这可能需要存在同一实体的两个“副本”。我打算只写一个 after_save 回调来更新人们的相关引用。欢迎任何想法。
-
在每个企业中存储对 People 对象的引用数组可能最容易。
-
这在严格意义上是不可能的,因为您最终会将关联与嵌入式关联混为一谈,这可能是您不想要的。您可以复制引用,以便 Business
has_many :people和has_many :embedded_people或其他内容,但您可以让它们保持同步。您是否可能过早地进行了优化?
标签: ruby-on-rails mongodb mongomapper nosql