Mongoid

ここ見ながら、使い方に迷っていたので。

class Person
  include Mongoid::Document
  embeds_one :name
  attr_accessible :name
end

class Name
  include Mongoid::Document
  field :vorname, type: String
  field :nachname, type: String
  embedded_in :person
end

みたいに定義のコレクションに

{ "_id" : ObjectId("4f7477cb955fbd1fd3000001"), "name" : { "_id" : ObjectId("4f7477cb955fbd1fd3000002"), "vorname" : "Heinrich", "nachname" : "Heine" } }

現在こうなってるとする。これを取得するには

b = Person.where('name.vorname' => "Heinrich")
b.each do |c|
  pp c.name.vorname
end

のような感じで。