有关mongoid中字段的条件

时间:2017-06-20 15:42:24

标签: ruby-on-rails mongodb mongoid

我有一个具有多个会话的用户类。 我想写一个查询,计算每个用户的会话数,在特定时间范围内

换句话说,我正在查找看起来像这样的查询: User.where(:sessions.date => date1..date2)

解决这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分: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查询中从数据库传输较少的数据。