Ако не искате да зареждате всички резултати в паметта с помощта на toArray, можете да повторите с помощта на курсора с нещо като следното.
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);
}