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

179
Views
¿Cómo usar mongoose updateMany middleware para aumentar el rendimiento?

RESUELTO: SOLUCIÓN EN LA PARTE INFERIOR

Tengo el siguiente Código donde estoy actualizando elemento por elemento:

 //registerCustomers.js const CustomerRegistrationCode = require("../models/CustomerRegistrationCode"); const setRegCodesToUsed = async (regCodes) => { for (let regCode of regCodes) { await setRegCodeToUsed(regCode._id); } }; const setRegCodeToUsed = async (id) => { await CustomerRegistrationCode.findByIdAndUpdate(id, { used: true }); };

El código funciona bien, pero es lento y quiero actualizar muchos (1000) códigos de registro de cliente a la vez. Eché un vistazo a la función de middleware updateMany pero no encontré mucha información en línea ni en los documentos oficiales. Cambié mi código a lo siguiente, pero no sé cómo más.

 //registerCustomers.js const setRegCodesToUsed = async (regCodes) => { await CustomerRegistrationCode.updateMany(regCodes); }
 //CustomerRegistrationCode.js CustomerRegistrationCodeSchema.pre('updateMany', async function (next, a) { console.log('amount arguments: ', arguments.length); //is 2 console.log(arguments); //both parameters are functions. next(); });

¿Cuál sería la mejor manera de actualizar muchos CustomerRegistrationCodes con 1000 ID diferentes?

SOLUCIÓN, gracias a Murat Colyaran

 const setRegCodesToUsed = async (regCodes) => { const ids = []; regCodes.map(code => ids.push(code._id)); await setRegCodeToUsed(ids); }; const setRegCodeToUsed = async (ids) => { await CustomerRegistrationCode.updateMany( { _id: { $in: ids } }, { used: true } ); };
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto debería funcionar:

 //registerCustomers.js const CustomerRegistrationCode = require("../models/CustomerRegistrationCode"); const setRegCodesToUsed = async (regCodes) => { let ids = []; regCodes.map((code) => ids.push(code._id.toString())); await setRegCodeToUsed(ids); }; const setRegCodeToUsed = async (ids) => { await CustomerRegistrationCode.updateMany( { id : { $in: ids } }, { used: true } ); };

En lugar de enviar una consulta para cada registro, solo analizamos la id y enviamos una solicitud masiva con $in

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!