en nodejs, cómo detener un bucle FOR hasta que se devuelva la llamada mongodb

Por favor, mire el fragmento de código a continuación. Tengo una matriz de objetos JSON llamada 'stuObjList'. Quiero recorrer la matriz para encontrar objetos JSON específicos con un determinado conjunto de indicadores y luego hacer una llamada a la base de datos para recuperar más datos.

Por supuesto, el bucle FOR no espera a que la llamada db regrese y llegue al final con j == longitud. Y cuando la llamada de db vuelve, el índice 'j' está más allá del índice de matriz. Entiendo cómo funciona node.js y este es el comportamiento esperado.

Mi pregunta es, ¿cuál es el trabajo por aquí? ¿Cómo puedo lograr lo que estoy tratando de lograr? Gracias, --su

...............
...............
...............
else
{
  console.log("stuObjList.length: " + stuObjList.length);
  var j = 0;
  for(j = 0; j < stuObjList.length; j++)
  {
    if(stuObjList[j]['honor_student'] != null)
    {     
      db.collection("students").findOne({'_id' : stuObjList[j]['_id'];}, function(err, origStuObj)
      {
        var marker = stuObjList[j]['_id'];
        var major = stuObjList[j]['major'];
      });
    }

    if(j == stuObjList.length)
    {
      process.nextTick(function()
      {
        callback(stuObjList);
      });
    }
  }
}
});

Respuestas a la pregunta(4)

Su respuesta a la pregunta