2017-06-20 63 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转移缺乏数据。