带轨道的MongoDB嵌入式文档/文档

问题描述:

我最近开始通过使用MongoMapper gem在MongoDB on Rails上玩耍。我想知道是否有某种方式让类/对象/集合既是文档又是嵌入式文档。我希望同一个实体既能被包含/嵌入到其他文档中,也能够作为一个对象自己存在。带轨道的MongoDB嵌入式文档/文档

这可能吗?我是否以错误的方式处理这个问题?任何讨论/建议将不胜感激,因为网络上的资源现在看起来对这个东西来说似乎很低。

+0

一般的答案是否定的,但我认为你可以在错误的方式接近问题。你能准确地说出你想要做什么吗? – 2010-05-04 03:10:30

+0

当然,所以我有两个实体:业务和人员。我希望企业将人员作为嵌入式文档。但是,我希望人们成为他们自己的文档,因为他们也有相关的实体。 他们都有自己的展示页面 - 并且是独立的实体。但为了提高效率,我希望人们能够作为商业嵌入式文档进行存储。 我知道这可能需要存在两个相同实体的“副本”。我打算只写一个after_save回调来更新关联的人员引用。 欢迎任何想法。 – Bensign 2010-05-04 03:57:44

+0

可能最容易在每个业务中存储对People对象的引用数组。 – 2010-05-05 03:29:55

我有一个非常类似的用例和孤子是有(使用实体名称):

  • 与人集合
  • 一个嵌入模型商人说belongs_to_related :person
  • 与企业的集合, embeds_many :busiess_people

这背后的想法是,我在BusinessPerson中有额外的字段,如果人也r从事不同的业务。让我们说一下这个企业中的角色,一个电子邮件地址或它的份额。

没有你可能会说获得业务的人可能看起来很难,但它不是:

class Person 
    def businesses 
    Business.where('business_people._id' => self.id) 
    end 
end