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岁以下女性居住的所有房屋?如何为嵌入对象指定多个条件?
要将多个条件应用于数组中的每个条目,您应该使用$elemMatch运算符.我不熟悉Mongoid,但是这里是修改后使用的查询的MongoDB shell语法$elemMatch:
> db.house.find({inhabitants: {$elemMatch: {gender: "female", age: {$lt: 50}}}})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |