node.js - UpdateMany en mongoose no funciona pero directamente en mongodb funciona bien
Estoy intentando hacer una actualización/inserción en mongoose. Hago algunas solicitudes y el resultado es (ejemplo)
let obj = [
{name: aaa,age: 10},
{name: bbb,age: 11},
{name: ccc,age: 12},
]
Estoy intentando actualizar todos los documentos, pero si no existen, crearlos.
Intenté hacer:
updateMany({}, {$set: {nome:"obj.$.name", idade: "obj.$.age"}}, {upsert:true})
Pero, no pasa nada, intento hacer otra prueba en mongoose, más simple, así:
<model-context>.updateMany({},{$set: {name: 'abc'}},{upsert: true})
No funcionó, así que hice la misma actualización directamente en MongoDB
db.context.updateMany({},{$set: {name: 'abc'}},{upsert: true})
Y funcionó, ¿necesito hacer algo más en Mongoose para que funcione?
NOTA: Puedo usar createMany en mongoose, funciona bien.
Respuesta #1
Resolví el problema, necesito pasar una función como argumento de updateMany
for(let n of obj){
<context>.update({name: n.name}, {$set: {'age':n.age}}, {upsert: true},
(err, doc)=>{
if(err) console.log(err);
console.log(doc)
})
}
