gpt4 book ai didi

python - 如何将 Motor Latent CommandCursor 转换为列表

转载 作者:行者123 更新时间:2023-12-03 16:31:45 28 4
gpt4 key购买 nike

我在 django 项目中使用 mongoDB 的电机驱动程序,但在将数据(来自数据库作为光标)转换为列表时遇到问题,这是我的代码:

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)

最佳答案

我不认识 Motor,但快速检查一下他们的 docs显示此:

光标是异步可迭代的,因此您可以使用 async for 来迭代:

async for document in db.test_collection.find({'i': {'$lt': 2}}):
pprint.pprint(document)

您可以将其转换为具有异步列表理解的列表:

items = [x async for x in db.test_collection.find({'i': {'$lt': 2}})]

它们还有辅助函数将光标转换为可等待列表:

items = await db.test_collection.find({'i': {'$lt': 2}}).to_list(length=100)

关于python - 如何将 Motor Latent CommandCursor 转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66223831/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com