0

I'm counting the documents based on admission date of students by #using mongoose library

I have tried with new Date() and new Date().toISOString()

parameters = {
          "startDate": "2013-01-01T00:00:00+05:30",
          "endDate": "2013-12-31T23:59:59+05:30"
        }

var prom = student.find({
     admissiondate: {
         $gte: new Date(parameters.startDate),
         $lte: new Date(parameters.endDate)
        }
        }, { _id: 0, admissionno: 1, firstname: 1, lastname: 1 })
#for date to isostring
var prom = student.find({
           admissiondate: {
               $gte: new Date(parameters.startDate).toISOString(),
               $lte: new Date(parameters.endDate).toISOString()
           }
       }, { _id: 0, admissionno: 1, firstname: 1, lastname: 1 })

Expected: a number (ex: 12)

ERRORS:

for new Date()

CastError: Cast to date failed for value "Invalid Date" at path "admissiondate" for model "students"

for new Date().toISOString()

RangeError: Invalid time value at Date.toISOString ()

Community
  • 1
  • 1
rithesh
  • 19
  • 4
  • if I take your `parameters` and run this in the browser console: `var y = new Date(parameters.startDate);` it gives me `Mon Dec 31 2012 19:30:00 GMT+0100 (Ora standard dell’Europa centrale)` – GrafiCode Jun 27 '19 at 09:36
  • Cast to date should work... – GrafiCode Jun 27 '19 at 09:37

1 Answers1

0

Try changing new Date() to ISODate()

var prom = student.find({
           admissiondate: {
               $gte: ISODate(parameters.startDate).toISOString(),
               $lte: ISODate(parameters.endDate).toISOString()
           }
       }, { _id: 0, admissionno: 1, firstname: 1, lastname: 1 })

Mongoplayground

Anton
  • 3,587
  • 2
  • 12
  • 27