I have two queries I am running. Both query for documents inside a date range. The first example works using this:
db.collection('' + site_id + '_page_visits').find({created_at: {"$gte": new Date("" + date + "T00:00:00.000Z"), "$lte": new Date("" + date + "T23:59:59.999Z")}}).toArray(...
However, the date I need to check on in the second query is nested inside an array inside call_to_action_responses, and using the same setup for the date range filter does not work, example:
db.collection('' + site_id + '_leads').find({"call_to_action_responses.response_date": {$gte: new Date("" + date + "T00:00:00.000Z"), $lte: new Date("" + date + "T23:59:59.999Z")}, "call_to_action_responses.page_url": {$not: regex}, "call_to_action_responses.page_url": {$ne: ''} }).toArray(...
Using that code it returns all documents matching $lte only.  It seems to ignore the $gte part of the filter, which works in the first example.
A Sample record looks like this:
{
  _id: ObjectId("XXxXXxxxxxXXxXx"),
  cookie: "xxcXXXXxxx-xxxXXXx-XXXXxx",
  updated_at: ISODate("2016-09-20T01:31:56.677Z"),
  created_at: ISODate("2015-04-22T08:32:34.864Z"),
  call_to_action_responses: [
    {
      response_date: ISODate("2015-04-22T08:32:34.863Z"),
      page_version: "1",
      template_response_path_base: "page_path",
      page_url: "http://www.webiste.com/about",
      page_id: ObjectId("5527d6c40de2c02a0b0000f2"),
      email: "user_email_at@email.com",
      lead_data: {
        phone: "XXXXXXXXX",
        viewed_assets: "This_Asset",
        campaign_medium: "",
        campaign_content: "",
        first_name: "first",
        last_name: "last",
        campaign_source: "",
        campaign_name: "",
        company: "Test Company",
        title: ""
       },
      _id: ObjectId("XXXXxxXXxXXxXXXX"),
      name: "View ",
      target_url: "http://www.webiste.com/about"
    }
  ]
}
Can anyone see what I am doing wrong here? Ir let me know the syntax to this because I cannot seem to get it dialed in. Thanks for any help!
 
    