private async Task IterateAsync(Action <T> action) { using (var cursor = await collection.FindAsync()) { while (await cursor.MoveNextAsync()) { var batch = cursor.Current; foreach (var document in batch) { // process document action.Invoke(document); } } } }