blitzen12
blitzen12

Reputation: 1390

Mongoose not returning the correct number of results

I'm new to mongoose. I'm trying to query by createdAt date, with startDate and endDate, however I got the incorrect number of results.

data

{"_id":{"$oid":"5f4fab9beceaa20f898feafb"},"message":"Inquiry 101","service":"GENERAL_INQUIRY","name":"Alex","email":"[email protected]","personalNumber":"0991898838398","createdAt":{"$date":"2020-09-02T14:26:35.237Z"},"updatedAt":{"$date":"2020-09-02T14:26:35.237Z"}}
{"_id":{"$oid":"5f4fc3677e7b1e2d806714cf"},"message":"Inquiry 101","service":"GENERAL_INQUIRY","name":"Joshua","email":"[email protected]","personalNumber":"0991898838398","createdAt":{"$date":"2020-09-02T16:08:07.123Z"},"updatedAt":{"$date":"2020-09-02T16:08:07.123Z"}}
{"_id":{"$oid":"5f50b80f28ca26065b2ac9a5"},"message":"Inquiry 101","service":"GENERAL_INQUIRY","name":"Harold","email":"[email protected]","personalNumber":"0991898838398","createdAt":{"$date":"2020-09-03T09:31:59.112Z"},"updatedAt":{"$date":"2020-09-03T09:31:59.112Z"}}
{"_id":{"$oid":"5f59104ff518c40579b578d0"},"message":"Inquiry 101","service":"GENERAL_INQUIRY","name":"Katy","email":"[email protected]","personalNumber":"0991898838398","createdAt":{"$date":"2020-09-09T17:26:39.787Z"},"updatedAt":{"$date":"2020-09-09T17:26:39.787Z"}}

I have 4 records with the ff. date 2020-09-02, 2020-09-03 and 2020-09-09

I wanted to get all records from 2020-09-02 and 2020-09-03, with these I expected 3 results as I have to records on the 2020-09-02, however I only got 2 results, those records have 2020-09-02 date with them.

const { limit = 30 } = params;

    return new Promise((resolve, reject) => {
        const query = {
          createdAt: {
            $gte: '2020-09-02',
            $lte: '2020-09-03',
          }
        };
      this.model.find(query).sort({
        createdAt: 'descending',
      }).limit(limit).exec((err, res) => {
        if (!err) {
          resolve(res);
        }
        reject(err);
      })
    })

Did I miss something with my code?

I also tried passing new Date('2020-09-02') but I still got same results.

I tried setting mongoose debug to true and below is what I got.

Mongoose: inquiries.find({ createdAt: { '$gte': new Date("Wed, 02 
Sep 2020 00:00:00 GMT"), '$lte': new Date("Thu, 03 Sep 2020 00:00:00 GMT") }}, { sort: { createdAt: -1 }, limit: 30, projection: {} 
})

Thanks in advance.

Upvotes: 0

Views: 27

Answers (1)

Richard Price
Richard Price

Reputation: 490

Youre looking for records greater than 2020-09-02 00:00:00 and less than 2020-09-03 00:00:00.

You only have 2 records which are between these values, if you want records including those at 2020-09-03 23:59:59, set your lte to 2020-09-04

Upvotes: 1

Related Questions