MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb, pymongo, aggregate danno un output strano (qualcosa sul cursore)

Il risultato di una query di aggregazione è un cursore, come per un normale find interrogazione. In caso di pymongo il CommandCursor è iterabile, quindi puoi eseguire una delle seguenti operazioni:

cursor = db.points.aggregate(...)

# Option 1
print(list(cursor))

# Option 2
for document in cursor:
    print(document)

Nota: come arun ha notato , in entrambi i casi, ovvero dopo aver creato un elenco dal cursore o aver eseguito un'iterazione nel ciclo for, non sarà possibile ripetere l'iterazione sul cursore. In tal caso la prima opzione diventa migliore, se si desidera utilizzarla in futuro, poiché è possibile utilizzare l'elenco ottenuto quanto si vuole, perché è già in memoria.
Il motivo di non poterlo utilizzare ribadire è che il cursore è effettivamente sul server e invia i dati pezzo per pezzo e dopo che ti ha inviato tutti i dati (o il server è terminato) il cursore viene distrutto.