Jeśli nie chcesz wczytywać wszystkich wyników do pamięci za pomocą toArray, możesz wykonać iterację za pomocą kursora w następujący sposób.
myCollection.find({}, function(err, resultCursor) {
function processItem(err, item) {
if(item === null) {
return; // All done!
}
externalAsyncFunction(item, function(err) {
resultCursor.nextObject(processItem);
});
}
resultCursor.nextObject(processItem);
}