El resultado de una consulta de agregación es un cursor, como para un find
regular consulta. En el caso de pymongo
el CommandCursor
es iterable, por lo que puede hacer cualquiera de las siguientes cosas:
cursor = db.points.aggregate(...)
# Option 1
print(list(cursor))
# Option 2
for document in cursor:
print(document)
Nota: como arun se dio cuenta
, en ambos casos, es decir, después de crear una lista a partir del cursor, o iterar en el bucle for, no podrá volver a iterar sobre el cursor. En ese caso, la primera opción se vuelve mejor, si desea usarla en el futuro, ya que puede usar la lista obtenida tanto como quiera, porque ya está en la memoria.
La razón de no poder reitero es que el cursor está realmente en el servidor, y envía los datos fragmento por fragmento, y después de haberle enviado todos los datos (o el servidor finaliza), el cursor se destruye.