如何使用mongoid查询嵌入式文档中的子类?

时间:2012-01-06 04:00:03

标签: ruby mongodb mongoid

我有一个Box,有很多种类型的玩具:

class Box
    embeds_many :toys
end

class Toy
   field :name
   embedded_in :box
end

class Car < Toy
end

class Doll < Toy
end

如果我找到了我想要的特定盒子对象,我如何查询它以找到汽车?

my_box.toys.where(??? Car ??? )

显然,我可以迭代每个玩具并提取toy.is_a? Car,但我正在寻找一个解决方案,如果存在,只使用内置的mongoid标准/查找器。

1 个答案:

答案 0 :(得分:2)

这是个好问题。幸运的是,Mongoid用于在文档中存储_type元属性来处理这类场景

所以你可以通过

找到盒子里的汽车
  Box.where('toys._type'=>'Car')

多数人