如何在嵌入文档中使用$ in运算符

时间:2014-03-31 02:29:51

标签: ruby-on-rails mongodb ruby-on-rails-4 mongoid mongoid3

我是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?

感谢您的帮助:)

1 个答案:

答案 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 <=