我有一个应用程序,它使用 MongoDB(在 AWS DocumentDB 上)在其中一个字段中存储带有大字符串的文档,我们称之为字段 X。
开始时需要注意几点:
- 我正在使用 pymongo,所以您可能会在此处看到的方法名称取自那里
- 由于字段 X 的性质,它没有被索引
在字段 X 上,我们使用 MongoDB 查找方法,该方法使用带有正则表达式条件的查询将其限制为maxTimeMS并限制为少量结果。
当我们得到结果时,我们迭代游标以将所有结果提取到列表中(内联循环)。
大多数时候查询正常工作,但我开始收到越来越多的以下错误:
pymongo.errors.OperationFailure: Cannot update value (error code 14)
这是在查询返回游标之后抛出的,我们迭代结果并在尝试_refresh
通过调用该next
方法连接游标并_check_command_response
在最后一行被抛出之后发生,这意味着这是一个默认异常(?)。
查询:
collection.find(condition).max_time_ms(MAX_QUERY_TIME_MS).sort(sort_order) \
.limit(RESULT_LIMIT)
results = [document for document in cursor] # <--- here we get the error
堆栈跟踪:
pymongo/helpers.py in _check_command_response at line 155
pymongo/cursor.py in __send_message at line 982
pymongo/cursor.py in _refresh at line 1104
pymongo/cursor.py in next at line 1189
common/my_code.py in <listcomp> at line xxx
我试图了解异常的起源以正确处理它或使用不同的方法来处理光标。游标的刷新方法正在更新什么可能引发上述异常?
提前致谢。