sql >> Database >  >> NoSQL >> MongoDB

mongodb, pymongo, aggregaat geeft vreemde output (iets over cursor)

Het resultaat van een aggregatiequery is een cursor, zoals bij een gewone find vraag. In het geval van pymongo de CommandCursor itereerbaar is, kunt u een van de volgende dingen doen:

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

# Option 1
print(list(cursor))

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

Opmerking: as arun heeft opgemerkt , in beide gevallen, d.w.z. nadat u een lijst met de cursor hebt gemaakt of in de for-lus hebt herhaald, kunt u de cursor niet herhalen. In dat geval wordt de eerste optie beter, als u deze in de toekomst wilt gebruiken, omdat u de verkregen lijst zoveel kunt gebruiken als u wilt, omdat deze al in het geheugen zit.
De reden van het niet kunnen herhaal is dat de cursor zich daadwerkelijk op de server bevindt en de gegevens stuk voor stuk verzendt, en nadat het u alle gegevens heeft verzonden (of de server stopt), wordt de cursor vernietigd.




  1. Hoe te indexeren zodat tekst zoeken en sorteren de index gebruiken?

  2. Bull-wachtrij:wanneer een taak mislukt, hoe kunt u voorkomen dat de wachtrij de resterende taken verwerkt?

  3. Overwegingen bij het beheren van MongoDB

  4. Controleren of er een Index bestaat in mongodb