Резултатът от заявка за агрегиране е курсор, както при обикновено find
заявка. В случай на pymongo
CommandCursor
е итерируем, така че можете да направите някое от следните:
cursor = db.points.aggregate(...)
# Option 1
print(list(cursor))
# Option 2
for document in cursor:
print(document)
Забележка: както арун забеляза
, и в двата случая, т.е. след като създадете списък извън курсора или итерирате в for цикъла, няма да можете да повторите итерацията над курсора. В този случай първата опция става по-добра, ако искате да я използвате в бъдеще, тъй като можете да използвате получения списък колкото искате, тъй като той вече е в паметта.
Причината да не можете да повторение е, че курсорът всъщност е на сървъра и той изпраща данните част по част и след като ви изпрати всички данни (или сървърът се прекрати), курсорът се унищожава.