O resultado de uma consulta de agregação é um cursor, como para um
find
normal consulta. No caso de pymongo
o CommandCursor
é iterável, portanto, você pode fazer o seguinte:cursor = db.points.aggregate(...)
# Option 1
print(list(cursor))
# Option 2
for document in cursor:
print(document)
Observação: como não notado , em ambos os casos, ou seja, depois de criar uma lista a partir do cursor, ou iterar no loop for, você não poderá reiterar sobre o cursor. Nesse caso a primeira opção se torna melhor, se você quiser usá-la no futuro, pois pode usar a lista obtida o quanto quiser, pois ela já está na memória.
O motivo de não poder reiterar é que o cursor está realmente no servidor, e ele envia os dados pedaço por pedaço, e depois de enviar todos os dados (ou o servidor terminar), o cursor é destruído.