MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongodb, pymongo, aggregate дава странен изход (нещо за курсора)

Резултатът от заявка за агрегиране е курсор, както при обикновено find заявка. В случай на pymongo CommandCursor е итерируем, така че можете да направите някое от следните:

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

# Option 1
print(list(cursor))

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

Забележка: както арун забеляза , и в двата случая, т.е. след като създадете списък извън курсора или итерирате в for цикъла, няма да можете да повторите итерацията над курсора. В този случай първата опция става по-добра, ако искате да я използвате в бъдеще, тъй като можете да използвате получения списък колкото искате, тъй като той вече е в паметта.
Причината да не можете да повторение е, че курсорът всъщност е на сървъра и той изпраща данните част по част и след като ви изпрати всички данни (или сървърът се прекрати), курсорът се унищожава.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изтриете дълбоко вложен обект в mongodb

  2. Обратно извикване при операция на MongoDB с Node.js

  3. spring-mongo-1.0.xsd грешка

  4. В MongoDB как мога да сортирам документи въз основа на свойство във вграден обект?

  5. mongoose:връща само ключове от документ