我正在MongoDB中获取某个集合的全部数据,过了一段时间(大约30或60分钟),脚本引发了以下错误:
pymongo.errors.CursorNotFound:未找到游标ID 1801580172063793986,完整错误:{"确定":0.0,"错误消息":"未找到游标ID 1801580172063793986","代码":43,"代码名称":"未找到游标"}
这个错误发生在24k文档之后。我使用的Django和Pymongo连接到本地服务器上的数据库。这个集合有大约60k的文档。
我是这样得到数据的:
client = MongoClient(settings.MONGO_HOST, settings.MONGO_PORT)
collection = client[settings.MONGO_DB].collection
cursor = collection.find(no_cursor_timeout=True)
for document in cursor:
# getting the data from the user
以防万一,我用的是:
- Python 3.8语言
- 强哥3.1.4
- 派蒙戈3.11.0
- Mongod 4.4.2(用于本地服务器)
- Ubuntu 20.04
3条答案
按热度按时间m2xkgtsf1#
这不是错误的解决方案,但这是避免错误的一种方法。为了在尽可能短的时间内使用游标,您可以将所有数据保存在一个列表或类似的东西中。
nfs0ujit2#
尝试通过
cursorTimeoutMillis
参数全局设置光标超时。在终端中键入:
gab6jxml3#
请参阅https://jira.mongodb.org/browse/SERVER-36808和相关的链接票证。
服务器可以销毁打开的游标正在使用的会话,这会导致这些游标不可用。
https://jira.mongodb.org/browse/PYTHON-1626可能会有帮助,虽然在我看来,这个问题是在服务器端,截至目前尚未解决。