2

我有一个应用程序,它使用 MongoDB(在 AWS DocumentDB 上)在其中一个字段中存储带有大字符串的文档,我们称之为字段 X。
开始时需要注意几点:

  1. 我正在使用 pymongo,所以您可能会在此处看到的方法名称取自那里
  2. 由于字段 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

我试图了解异常的起源以正确处理它或使用不同的方法来处理光标。游标的刷新方法正在更新什么可能引发上述异常?

提前致谢。

4

0 回答 0