5

我将如何创建一个能够保存在自己的集合中并嵌入到另一个文档中的 Mongoid 模型?

4

1 回答 1

6

简短的回答:你不能。

当您在两个 Mongoid 文档之间使用嵌入关系时,这是因为您希望子模型在其自己的集合中。一个嵌入式文档,字面意思是:嵌入其父级。

我不确定您是否是 Mongoid 的新手,因此您实际上可能正在寻找的是引用关系,它的行为更像是传统的 RDBMS 关系,其中子文档存储对父文档 ID 的引用。Mongoid 文档从这里开始。

鉴于这些嵌入式模型,在两者之间切换非常容易:

class Person
  include Mongoid::Document

  field :name
  embeds_many :phone_numbers
end

class PhoneNumber
  include Mongoid::Document

  field :area_code
  field :number

  embedded_in :person
end

你可以改变embeds_manyand embedded_in,所以它变成:

class Person
  include Mongoid::Document

  field :name
  has_many :phone_numbers
end

class PhoneNumber
  include Mongoid::Document

  field :area_code
  field :number

  belongs_to :person
end

它会起作用的。现在,您将能够使用以下语句直接查询电话号码等操作:PhoneNumber.where(:area_code => "212")

于 2012-06-14T00:11:51.973 回答