Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

278
Vistas
Documentos de actualización de Mongodb+mongoose con fecha de otro campo = error de conversión a fecha

bien, tengo algunos documentos a los que les faltan algunos datos, estoy tratando de actualizarlos de esta manera;

 await MyModel.updateMany( { imported: null }, { $set: { "imported": "$post.date" }} )

pero obtengo un error de conversión de fecha.

así que decidí trabajar con un solo documento para averiguar por qué.

así que primero veamos qué hay dentro de post.date

 console.log( await MyModel.find({ _id: '5c2ce0fa527ad758bdb29506' }) .select('post.date imported') )
 [ { post: { date: 2018-11-29T18:02:25.000Z }, _id: new ObjectId("5c2ce0fa527ad758bdb29506") } ]

Bien, pensé qué sucede si copio la fecha y la codifico, así:

 await MyModel.updateMany( { _id: "5c2ce0fa527ad758bdb29506" }, { $set: { "imported": "2018-11-29T18:02:25.000Z" }} )

eso funciona bien, pero cuando trato de usar el valor de $post.date, así:

 await MyModel.updateMany( { _id: "5c2ce0fa527ad758bdb29506" }, { $set: { "imported": "$post.date" }} )

en resultado de

 Cast to date failed for value "$post.date" (type string) at path "imported"

Intenté usar $dateFromString y $toDate pero no tuve suerte, pero siento que mongoose está tratando de validar el valor de la cadena "$post.date" y no interpretarlo como lo haría mongo incluso a través del esquema de mongoose que no tiene validadores definidos.

así que intenté agregar { runValidators: false } , pero parece que se ignora

 await MyModel.updateMany( { _id: "5c2ce0fa527ad758bdb29506" }, { $set: { "imported": "$post.date" }}, { runValidators: false } )

ya que el error es el mismo.

estoy ejecutando mongoose v. 6.2.0 y mongodb v. 4.2.18

cualquier entrada es muy apreciada

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puedes usar esto

 db.collection.update({ imported: null }, [ //aggregate update { "$set": { "imported": "$post.date" } } ])

Compatible con Mongo 4.2+

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda