2014-03-31 49 views
0

我是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運營商在specification /嵌入文件/的body領域。如何在嵌入式文檔中使用$in運算符?我嘗試了下面的代碼,但它不工作。

result += Vehicle.where(:specification.matches => { :body.in => param(:body) }) if params[:body].present? 

感謝您的幫助:)

+0

我不知道你想在這裏做什麼,但'embeds_one'只是一堆圍繞嵌入式哈希的包裝,所以'Vehicle.where('specification.body'=> ...)'可能是一個起點。 –

回答

1

爲@ MU-是太短暫在他的評論中提到,在嵌入式文檔搜索使用

if params[:body].present? 
    result += Vehicle.where('specification.body' => param(:body)).to_a 
end 

請注意Vehicle.where(...)回報一個Criteria這不是隻有對象被評估的對象。

也請注意,如果你想使用特定的運營商如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 <= 
+0

Hello @artmees,非常感謝。它的工作就像一個魅力:D – Zeck

相關問題