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

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

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