sql >> Base de Datos >  >> NoSQL >> MongoDB

mongodb, pymongo, el agregado da un resultado extraño (algo sobre el cursor)

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.