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

765
Views
Análisis de fechas de MongoDB e ISODate

Pregunta Al analizar cadenas como fechas en MongoDB, ¿cuál es la implementación recomendada?

Pregunto esto porque tenemos proveedores que nos envían la representación de cadena de una fecha en el formato "2017-01-01" y "2017/01/01". Hubiera pensado que el análisis de esas diferentes cadenas arrojaría el mismo resultado en MongoDB usando Date() e ISODate().

Dados los siguientes ejemplos que se ejecutan a través de MongoChef contra MongoDB 3.4

 1. print(new Date("2016-01-01")) 2. print(new Date("2016/01/01")) 3. print(new ISODate("2016-01-01")) 4. print(new ISODate("2016/01/01"))

Produce los siguientes resultados

 1. Thu Dec 31 2015 18:00:00 GMT-0600 (Central Standard Time) 2. Fri Jan 01 2016 00:00:00 GMT-0600 (Central Standard Time) 3. Thu Dec 31 2015 18:00:00 GMT-0600 (Central Standard Time) 4. 2017-01-06T10:34:01.814-0600 E QUERY [thread1] Error: invalid ISO date

Esto no tiene ningún sentido para mi. Cualquiera que pueda explicarme esto sería muy apreciado.

La que es aceptable para mí es la opción n. ° 2, así que me aseguro de que nuestras fechas estén separadas por "/" y estén usando el nuevo constructor Date().

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

"2017-01-01" y "2017/01/01" . Para abreviar, el primero, un formato ISO, por lo que analizará la hora UTC y el segundo, un formato no ISO, analizará la hora en la zona horaria local.

Considere la salida en el shell de Mongo. Todos los tiempos se muestran en hora UTC.

 1.new Date("2016-01-01") ---- ISODate("2016-01-01T00:00:00Z") 2.new Date("2016/01/01") ---- ISODate("2016-01-01T06:00:00Z") 3.new ISODate("2016-01-01") ---- ISODate("2016-01-01T00:00:00Z") 4.new ISODate("2016/01/01") ----2017-01-06T11:14:56.862-0600 E QUERY [thread1] Error: invalid ISO date :

Mongo db guarda todas las fechas en horario UTC.

Mongo chef transforma todos los valores de fecha y hora UTC guardados anteriormente a la zona horaria local (compensación de -06:00), solo con fines de visualización.

Entonces, la elección es entre ISODate("2016-01-01T00:00:00Z") vs ISODate("2016-01-01T06:00:00Z") .

Ambos son fechas y horas UTC. Parece que solo está interesado en la parte de la fecha (con la parte de la hora establecida en la medianoche), la opción 2 ( new Date("2016/01/01") ---- ISODate("2016-01-01T06:00:00Z") ) sería su elección y todas las consultas de comparación funcionarán bien siempre que cree la fecha de la misma manera que lo hizo al guardar.

Referencia:

https://docs.mongodb.com/manual/reference/bson-types/#document-bson-type-date

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

over 4 years ago · Santiago Trujillo 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!