MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

mongodb, pymongo, agregat daje dziwne wyjście (coś o kursorze)

Wynikiem zapytania agregującego jest kursor, tak jak w przypadku zwykłego find zapytanie. W przypadku pymongo CommandCursor jest iterowalny, więc możesz wykonać dowolną z następujących czynności:

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

# Option 1
print(list(cursor))

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

Uwaga: jako arun zauważył , w obu przypadkach, tj. po utworzeniu listy z kursora lub iteracji w pętli for, nie będzie można powtórzyć iteracji nad kursorem. W takim przypadku pierwsza opcja staje się lepsza, jeśli chcesz z niej skorzystać w przyszłości, ponieważ z otrzymanej listy możesz korzystać do woli, ponieważ jest już w pamięci.
Powód braku możliwości powtarzam, że kursor znajduje się w rzeczywistości na serwerze i wysyła dane kawałek po kawałku, a po wysłaniu wszystkich danych (lub zakończeniu działania serwera) kursor zostaje zniszczony.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Railsy - gdzie MongoDB (Mongoid) przechowuje db i logi?

  2. Zwróć dokument z dokumentem podrzędnym Max

  3. Ostrzeżenie dotyczące łączenia się z MongoDB za pomocą serwera Node

  4. Transakcje w MongoDB

  5. Jak zaktualizować podzbiór ciągu w MongoDB?