Búsqueda de sitios web

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