MongoDB + nodejs : how to query ISODate fields?

Viewed 73177

I am using nodejs with the node-mongodb-native driver (http://mongodb.github.io/node-mongodb-native/).

I have documents with a date property stored as ISODate type.

Through nodejs, I am using this query:

db.collection("log").find({
    localHitDate: { 
            '$gte': '2013-12-12T16:00:00.000Z',
            '$lt': '2013-12-12T18:00:00.000Z' 
    }
})

It returns nothing. To make it work I need to do the following instead:

db.collection("log").find({
    localHitDate: {
            '$gte': ISODate('2013-12-12T16:00:00.000Z'),
            '$lt': ISODate('2013-12-12T18:00:00.000Z')
    }
})

But ISODate is not recognized in my nodejs code.

So how can I make a query against mongo date fields through my nodejs program?

Thank you

4 Answers

we need to use new Date() is best option to get the data.

db.getCollection('orders').aggregate([
  {
    '$match': {
      $and: [
        {
          status: 'UNASSIGNED'
        },
        {
          plannedDeliveryDate: {
            '$eq': new Date('2017-10-09')
          }
        }
      ]
    }
  },
  {
    $lookup: {
      from: "servicelocations",
      localField: "serviceLocationId",
      foreignField: "serviceLocationId",
      as: "locations"
    }
  },
  {
    $unwind: "$locations"
  },
  {
    "$project": {
      "accountId": 1,
      "orderId": 1,
      "serviceLocationId": 1,
      "orderDate": 1,
      "description": 1,
      "serviceType": 1,
      "orderSource": 1,
      "takenBy": 1,
      "plannedDeliveryDate": 1,
      "plannedDeliveryTime": 1,
      "actualDeliveryDate": 1,
      "actualDeliveryTime": 1,
      "deliveredBy": 1,
      "size1": 1,
      "size2": 1,
      "size3": 1,
      "jobPriority": 1,
      "cancelReason": 1,
      "cancelDate": 1,
      "cancelBy": 1,
      "reasonCode": 1,
      "reasonText": 1,
      "status": 1,
      "lineItems": 1,
      "locations": {
        "lng": "$locations.location.lng",
        "lat": "$locations.location.lat"
      }
    }
  }
])

You can go through my answer, provided in other asked question.

Their instead of $eq use $gte:"yyyy-mm-dd", $lte:"yyyy-mm-dd"

NodeJS MongoDB: Querying ISO Date

Hope this will help you or somebody else!

Related