我有这个结构

class House
  include Mongoid::Document
  embeds_many :inhabitants
end

class Inhabitant
  include Mongoid::Document
  embedded_in :house
  field :name
  field :gender
  field :age
end

我可以得到所有女性居住的房子:
houses = House.where("inhabitants.gender" => "female")

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

最佳答案

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

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

关于ruby-on-rails - Mongoid:选择适合多个选项的嵌入对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7389539/

10-12 18:29