Mongoid:选择适合多个选项的嵌入对象

fl0*_*00r 4 ruby ruby-on-rails mongodb mongoid ruby-on-rails-3

我有这个结构

class House
  include Mongoid::Document
  embeds_many :inhabitants
end

class Inhabitant
  include Mongoid::Document
  embedded_in :house
  field :name
  field :gender
  field :age
end
Run Code Online (Sandbox Code Playgroud)

我可以得到所有女性居住的房屋:

houses = House.where("inhabitants.gender" => "female")
Run Code Online (Sandbox Code Playgroud)

但是,如何才能获得50岁以下女性居住的所有房屋?如何为嵌入对象指定多个条件?

dcr*_*sta 7

要将多个条件应用于数组中的每个条目,您应该使用$elemMatch运算符.我不熟悉Mongoid,但是这里是修改后使用的查询的MongoDB shell语法$elemMatch:

> db.house.find({inhabitants: {$elemMatch: {gender: "female", age: {$lt: 50}}}})
Run Code Online (Sandbox Code Playgroud)