1. ホーム
  2. データベース

pymongo.errors.OperationFailure:オーバーフローソートステージのバッファリングデータの使用量が内部制限を超える

2022-02-25 01:33:57
<パス

    pymongoインターフェースでfind().sort()メソッドを呼び出すとエラーになります。このエラーは次のように報告されます。

>>> pymongo.errors.OperationFailure: database error: Plan executor error during find: Overflow sort stage buffered data usage of 33574037 bytes exceeds internal limit of 33554432 bytes


    これは sort() を実行したときに 32MB のメモリ内ソートを超えたためで、回避策は mongodb の対応するデータベースでそのメモリ制限を変更することです。

    例えば、私のオリジナルのコードは

>>> client = MongoClient('localhost',27018)
>>> db = client['NetEase']
>>> col = db['comment_content']
>>> for item in col.find().sort('page_index',pymongo.ASCENDING):
    ...     print item['page_index']


    次に、これを次のように変更します。

>>> mongo --port=27018
>>> use NetEase
>>>db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: <limit in bytes>})


これでよしと。