Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

762
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda