Recientemente comencé a trabajar con MongoDB y su tubería de agregación. Necesito ayuda para recorrer el campo llamado Id y realizar una operación de agregación en él, uno tras otro, directamente dentro de la canalización.
Actualmente estoy haciendo algo como esto (en Node.js):
let patients = await client.db('MyDB').collection('Patients_MA').find().toArray(); let patientColl = client.db('MyDB').collection('Patients_MA'); for (int i=0; i<patients.length; i++) { doc = patientColl.aggregate([ { $match: {Id: patients[i].Id} }, { $project: { _id: 0, num: { $add: [ {$multiply: [0.7, 2]}, {$multiply: [0.2, 2]}, {$multiply: [0.15, 0]} ] } } } ]); await patientColl.updateOne( { "Id": id }, { "$set": {'heuristic': num} } ); } En aras de una fácil comprensión, he condensado la canalización en lo principal que quiero que haga, que es actualizar el valor heuristic , pero en mi canalización original, cada Id tendrá un valor heuristic diferente. Además, tengo aproximadamente 8000 Id. de pacientes y en mi tubería original, estoy trabajando con 3 colecciones diferentes.
Entonces, mi pregunta es, ¿hay alguna manera de recorrer cada Id , ejecutar la canalización anterior y actualizar el valor heuristic directamente dentro de la canalización de agregación? ¿O una forma de hacer esto de manera más eficiente sin tener que hacer llamadas O(8000)?
Editar: Aquí está el enlace a la canalización original.