2017-06-20 60 views
1

我有一個用戶類has_many會話。 我想編寫一個查詢,計算每個用戶擁有的會話數量,在特定時間範圍有關mongoid中的字段的條件

換句話說,我會尋找一個查詢,看起來就像這樣: User.where(:sessions.date => date1..date2)

什麼是處理這個正確的方式?

回答

1

就我個人而言,我使用簡單的$gt$lt,因爲它允許查詢其中的一個,但當然也有一個$in運算符。

# Session seems to be a separate collection 
sessions = Session.where(:date => {"$gt" => date1, "$lt" => date2}) 
User.find(sessions.collect(&:user_id).uniq) 

除了這一點,您的查詢看起來完美的候選人,對一個聚合管道,從數據庫中查詢Session轉移缺乏數據。