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

183
Views
Cómo insertar elementos en varios arreglos en Node.js y MongoDB

Esta puede ser una pregunta extraña, pero creo que nada es completamente imposible.

Tengo una lista de usuarios en MongoDB, cada usuario tiene, entre otras cosas, una matriz de propiedades que actualmente está vacía.

En la hoja de Excel, tengo datos que representan las propiedades de cada usuario que quiero insertar mediante programación en la matriz de propiedades de cada usuario.

Importar la hoja de Excel es rápido y fácil de completar las propiedades de cada usuario es lo que me da el problema.

He agregado ID de usuario y PropeId de los usuarios y las propiedades que compraron, así que identifíquelos como se ve a continuación. tabla de asignaciones

 router.put('/importdata', async (req, res)=>{ // upload queries const imported = req.files.importdata; const uploadpath = path.resolve(`public/excel_maneger/uploads/ ${imported.name}`); if (imported.truncated) { throw new Error("Uploaded File is too big, should not be morethan 20 MB"); } await imported.mv(uploadpath); const file = render.readFile(uploadpath); const sheets = file.SheetNames; const data = []; for (let i = 0; i < sheets.length; i++) { const sheetname = sheets[i]; const sheetData = render.utils.sheet_to_json(file.Sheets[sheetname]); sheetData.forEach((item) => { data.push(item); }); } try { const users = await User.find({role: 'Customer'}) for(let i = 0; i < users.length; i++ ){ data.forEach((d) => { if(users[i].id == d.id){ User.updateMany( {}, { $set: { properties: { propeId: d.propeId, }, }, }, (err, d) => { if (err) console.log(err); } ); } }); } } catch (err) { console.log(err) } })

El problema es que este código actualiza a todos en la base de datos (incluidos los usuarios no especificados) con la misma información. Necesito ayuda, estoy tratando de importar la información de 11 mil usuarios de Excel a la base de datos.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Finalmente me di cuenta de dónde cometí el error, se supone que debo usar el operador $in: para acceder a múltiples ID según lo desee.

Aquí está la solución:

 data.forEach((d) => { User.updateMany( { _id: { $in: [d.id] } }, { $push: { properties: d.propeId, }, }, (err, d) => { if (err) return false; } ); });

Arriba resolvió el problema asombrosamente

about 4 years ago · Juan Pablo Isaza Report

0

Cuando está actualizando su User.updateMany() , no está pasando el Id.

Lo que hace es cuando if la declaración es true , actualiza a todos los usuarios. Puede usar findByIdAndUpdate

También deberías usar async/await . Ya que eso es lo que está usando para encontrar al usuario

 await User.findByIdAndUpdate( users[i]._id,{ $set: { properties: { propeId: d.propeId }}})
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!