MongoDB多次使用时查询结果游标意外为空

MongoDB query result cursor is unexpectedly empty when used multiple times

我的代码:

from pymongo import MongoClient

    class NewOrders:

        def __init__(self):
            self.client = MongoClient('localhost',27017)
            self.db = self.client['Flipkart']
            self.sale_order = self.db['sale_order'].find({'status':'APPROVED'})

        def getOrderItemId(self):
            oiids = []
            for each in self.sale_order:
                oiids.append(each['orderItemId'])
            return oiids

        def getStatus(self):
            stts = []
            for each in self.sale_order:
                stts.append(each['status'])
            return stts

我正在尝试从单个 class 对象调用上述两种方法,例如:

x = NewOrders()
print x.getOrderItemId()
print x.getStatus1()

我收到这样的回复:

['OD1','OD2','OD3']
[]

当我使用两个不同的 class 对象时,我得到:

['OD1','OD2','OD3']
['APPROVED','APPROVED','APPROVED']

为什么我不能通过单个对象调用两者?

find method of a collection returns a cursor, which can iterate over the results a single time. You can use the rewind方法将光标return重新开始,或者你可以将查询结果缓存在一个列表中,就像vaultah建议的那样。