Python 如何将MotorLatentCommandCursor转换为列表

Python 如何将MotorLatentCommandCursor转换为列表,python,python-3.x,django,mongodb,motordriver,Python,Python 3.x,Django,Mongodb,Motordriver,我在django项目中使用了mongoDB的Motor驱动程序,我无法将数据(作为游标来自数据库)转换为列表,下面是我的代码: documents = db.factor.aggregate([{"$limit": 3}, {"$lookup": {"from": "subfactor", "localField": "_id", "foreignField

我在django项目中使用了mongoDB的Motor驱动程序,我无法将数据(作为游标来自数据库)转换为列表,下面是我的代码:

documents = db.factor.aggregate([{"$limit": 3},
     {"$lookup": {"from": "subfactor", "localField": "_id", "foreignField": "factor_id", "as": "subfactor"}}])

for d in await list(documents):
    print(d)
错误是:

File "/usr/lib/python3.8/asyncio/runners.py", line 43, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.8/asyncio/base_events.py", line 595, in run_until_complete
self.run_forever()
File "/usr/lib/python3.8/asyncio/base_events.py", line 563, in run_forever
self._run_once()
File "/usr/lib/python3.8/asyncio/base_events.py", line 1808, in _run_once
event_list = self._selector.select(timeout)
File "/usr/lib/python3.8/selectors.py", line 468, in select
fd_event_list = self._selector.poll(timeout, max_ev)

我不知道电机,但快速查看他们的显示:

游标是异步的,因此可以使用async for进行迭代:

db.test_collection.find({'i':{'lt':2})中文档的
异步:
pprint.pprint(文件)
您可以将其转换为具有异步列表理解的列表:

items=[x async for x in db.test_collection.find({'i':{'lt':2}})]
此外,它们还具有将光标转换为可等待列表的帮助函数:

items=wait db.test\u collection.find({'i':{'lt':2}}).to\u list(长度=100)

我不知道mongoDB/Django部分,但是错误是关于
超时
s:这可能是问题所在,可能操作太慢了吗?@Pietro tnx对于您的评论,这不是问题,问题是将来自mongo的数据转换为Python代码。您的错误到底是什么?你去掉了第一行错误。光标是否也可编辑?我想不应该这样,因为库是基于异步的。