Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

234
Views
Cómo encontrar registros entre startDate y endDate - Nodejs, mongodb

Hay 4 registros en mi base de datos.

 {"_id":{"$oid":"6200b15e91f762376cd43ac3"},"startDate":{"$date":"2021-01-01T00:00:00.000Z"},"endDate":{"$date":"2021-01-28T18:29:59.059Z"},"__v":0} {"_id":{"$oid":"6200b15e91f762376cd43ac4"},"startDate":{"$date":"2021-01-01T00:00:00.000Z"},"endDate":{"$date":"2021-01-23T18:29:59.059Z"},"__v":0} {"_id":{"$oid":"6200b15e91f762376cd43ac5"},"startDate":{"$date":"2021-01-05T00:00:00.000Z"},"endDate":{"$date":"2021-01-28T18:29:59.059Z"},"__v":0} {"_id":{"$oid":"6200b15e91f762376cd43ac6"},"startDate":{"$date":"2021-01-05T00:00:00.000Z"},"endDate":{"$date":"2021-01-25T18:29:59.059Z"},"__v":0}

Mi interfaz de usuario se ve así:

ingrese la descripción de la imagen aquí

Mi consulta mongodb es la siguiente: (lo que he intentado)

 data.find({ "$or": [ {"startDate": {"$gte": startDate}}, {"endDate": {"$lte": endDate}} ] });

Cuando busco con la consulta anterior, obtengo solo 1 registro, es decir: {"_id":{"$oid":"6200b15e91f762376cd43ac3"},"startDate":{"$date":"2021-01-01T00:00:00.000Z"},"endDate":{"$date":"2021-01-28T18:29:59.059Z"},"__v":0} en lugar de los 4.

Mientras envío desde la interfaz de usuario, lo convierto es: req.query :

 dateStart: '2021-01-01', dateEnd: '2021-01-28',

Y luego conviértalo al new Date() :

 let startDate = new Date(req.query.dateStart); let endDate = new Date(req.query.dateEnd);

No sé en qué me equivoco en la consulta. ¡Necesitas ayuda! ¡Gracias!

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Con $ y parece funcionar como se esperaba:

 db.collection.aggregate([ { $match: { startDate: { $gte: { "$date": "2021-01-01T00:00:00.000Z" } }, endDate: { $lte: { "$date": "2021-01-28T00:00:00.000Z" } } } } ])

patio de juegos

about 4 years ago · Juan Pablo Isaza Report

0

Dado que espera que se devuelvan los 4 registros, para la fecha de finalización debe consultar utilizando el tiempo antes de que finalice la fecha 2021-01-28 , que es 2021-01-28T23:59:59.999Z en lugar de cuando comienza la fecha que es 2021-01-28T00:00:00.000Z .

Aquí hay un recurso sobre el formato de marcas de tiempo .

Así que una consulta como esta funcionaría:

 db.collection.find({ startDate: { $gte: { "$date": "2021-01-01T00:00:00.000Z" } }, endDate: { $lte: { "$date": "2021-01-28T23:59:59.999Z" } } })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!