2012-09-24 68 views
2

假設我有一個用戶文檔,其中有許多活動作爲嵌入式文檔。每當用戶在網站上做某事時,就會創建一個活動文檔(作爲示例)。在Mongoid中查詢帶有日期範圍的嵌入文檔的文檔

class User 
    include Mongoid::Document 
    has_many :activities 
end 

class Activity 
    include Mongoid::Document 
    field :action_executed_at, type: DateTime 
    belongs_to :user 
end 

我現在想在今天之後查詢所有用戶的活動。這可以用Mongoid完成嗎?我試着像查詢:

User.where("activities.action_executed_at" => {"$gt" => DateTime.now.to_s}) 

甚至:

User.where("activities" => { 
    "$elemMatch" => { 
    "action_executed_at" => { 
     "$gt" => DateTime.now.to_s 
     } 
    } 
}) 

但他們總是返回空的集合。

回答

2

試試這個

User.where(:'activities.action_executed_at'.gt => DateTime.now) 
+0

沒有成功。只要我打電話指望Mongoid告訴我的這些'where'方法:「BSON :: InvalidDocument:無法將類DateTime的對象序列化爲BSON。」這可能是一種其他東西出錯的味道嗎? – Cimm

+0

在上面的查詢中試試'DateTime.now.utc'或'DateTime.now.to_s'的值... – abhas

+0

謝謝,試過了,但總是返回0結果。我在想這可能是一個跡象,有什麼我做錯了? – Cimm