Cimm
Cimm

Reputation: 4775

Query document with embedded documents with date ranges in Mongoid

Suppose I have a user document who has many activities as an embedded document. Every time a user does something on the site an activity document is created (as an example).

class User
  include Mongoid::Document
  has_many :activities
end

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

I now want to query all the users with an activity after today. Can this be done with Mongoid? I tried queries like:

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

And even:

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

But they always return and empty collection.

Upvotes: 2

Views: 320

Answers (1)

abhas
abhas

Reputation: 5213

try this

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

Upvotes: 2

Related Questions