相关疑难解决方法(0)

mongodb cursor id无效错误

我试图遍历这个循环:

for doc in coll.find()
Run Code Online (Sandbox Code Playgroud)

我在第100,000个加号记录中收到以下错误.

File "build\bdist.win32\egg\pymongo\cursor.py", line 703, in next
File "build\bdist.win32\egg\pymongo\cursor.py", line 679, in _refresh
File "build\bdist.win32\egg\pymongo\cursor.py", line 628, in __send_message
File "build\bdist.win32\egg\pymongo\helpers.py", line 95, in _unpack_response
pymongo.errors.OperationFailure: cursor id '1236484850793' not valid at server
Run Code Online (Sandbox Code Playgroud)

这个错误是什么意思?

python mongodb

40
推荐指数
3
解决办法
2万
查看次数

MongoDB C#Driver'未找到游标'

我有一个非常密集的操作,MongoCursor在循环中运行几个小时(在通过c#驱动程序运行的vb.net应用程序上.我不太确定是什么导致它但是我在一段时间后遇到异常

Cursor not found
Run Code Online (Sandbox Code Playgroud)

这可能是因为游标超时,也许?有没有办法阻止它发生?如果超时问题我如何设置更长的超时?

mongodb mongodb-.net-driver

6
推荐指数
1
解决办法
4258
查看次数

是否有可能在Pymongo中创建一个没有光标超时的聚合?

聚合看起来像:

res = Things.objects._collection.aggregate(pipeline,
            allowDiskUse=True,
            batchSize=101,
            noCursorTimeout=True
        )
Run Code Online (Sandbox Code Playgroud)

并失败了

OperationFailure:无法识别的字段'noCursorTimeout'

从Pymongo文档中可以看出no_cursor_timeout可以和find()一起使用,但是我找不到为aggregate()找到类似的**kwargs是不成功的.

我不想使用setParameter或maxTimeMS.

更新:

来自MongoDB的Jira站点:SERVER-15042

OP_QUERY标头中的NoCursorTimeout位可防止服务器关闭空闲超过10分钟的游标.如果客户可能花费超过10分钟处理一批结果,客户可以设置此位.

"aggregate"和"parallelCollectionScan"命令也应允许客户端关闭游标超时.

这张票的回复是:

我们故意不支持noCursorTimeout.当我们实现游标keepalive时,需要这个的基本原理就会消失.该工作将在SERVER-6036中进行跟踪.

看看SERVER-6036:

  • 更新时间:2016年9月14日下午03:53:05 GMT + 0000
  • 状态:打开
  • 解决方案:尚未解决
  • 修复版本:已计划但未计划

如果我已正确读取文档,则对于aggregate()还不存在游标no timeout选项.

python aggregate find pymongo

4
推荐指数
1
解决办法
2933
查看次数

标签 统计

mongodb ×2

python ×2

aggregate ×1

find ×1

mongodb-.net-driver ×1

pymongo ×1