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