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

272
Views
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 answers
Answer question

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 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!