Rzeczywista .aggregate()
Metoda sama w sobie nie jest "asynchroniczna". Ale iteracja kursora jest taka.
Więc zamiast tego:
cursor = db.activities.aggregate(pipeline)
while (yield cursor.fetch_next):
doc = cursor.next_object()
print(doc)
Tak jak mówią doktorzy.