Действителният .aggregate()
методът сам по себе си не е "асинхронен". Но итерацията на курсора е.
Затова вместо това:
cursor = db.activities.aggregate(pipeline)
while (yield cursor.fetch_next):
doc = cursor.next_object()
print(doc)
Точно както се казва в документите.