我有这个结构
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/