我是MongoID的新手。我有以下模型:
class Vehicle
include Mongoid::Document
include Mongoid::Timestamps
##
# Relationship
embeds_one :specification
end
class Specification
include Mongoid::Document
##
# Columns
field :body, type: String
##
# Relationship
embedded_in :vehicle
end
在我的控制器中,我尝试在$in
/ embed document /的body
字段中使用specification
运算符。如何在嵌入文档中使用$in
运算符?我试过下面的代码,但它没有用。
result += Vehicle.where(:specification.matches => { :body.in => param(:body) }) if params[:body].present?
感谢您的帮助:)
答案 0 :(得分:1)
在他的评论中提及@ mu-too-short,用于搜索您使用的嵌入式文档
if params[:body].present?
result += Vehicle.where('specification.body' => param(:body)).to_a
end
请注意,Vehicle.where(...)
会返回Criteria,而{{3}}不仅是要评估的查询的对象。
另请注意,如果您要使用in
,<
,<=
等特定运算符,则必须使用相应的mongodb运算符
Vehicle.where('specification.body' => {'$in' => param(:body)}) # matches .in
Vehicle.where('specification.body' => {'$lt' => param(:body)}) # matches <
Vehicle.where('specification.body' => {'$lte' => param(:body)}) # matches <=