O
.aggregate()
método não é em si "assíncrono". Mas a iteração do cursor é. Então, em vez disso:
cursor = db.activities.aggregate(pipeline)
while (yield cursor.fetch_next):
doc = cursor.next_object()
print(doc)
Assim como os docs dizem.