【问题标题】:Buffer overflow when I sort records by Pymongo当我通过 Pymongo 对记录进行排序时缓冲区溢出
【发布时间】:2017-04-10 07:36:30
【问题描述】:

当我通过 Pymongo 对记录进行排序时缓冲区溢出。我想按 time1 对仅满足特定位置的记录进行排序。但我有溢出。

>>> records = db['LOG'].find({"location":"172.27.112.18"}).sort('time1', 1)
>>> for i in records:
...     nill.append(i)
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/pymongo/cursor.py", line 1090, in next
    if len(self.__data) or self._refresh():
  File "/usr/lib64/python2.7/site-packages/pymongo/cursor.py", line 1012, in _refresh
    self.__read_concern))
  File "/usr/lib64/python2.7/site-packages/pymongo/cursor.py", line 903, in __send_message
    codec_options=self.__codec_options)
  File "/usr/lib64/python2.7/site-packages/pymongo/helpers.py", line 137, in _unpack_response
    error_object)
pymongo.errors.OperationFailure: database error: Plan executor error during find: Overflow sort stage buffered data usage of 33554525 bytes exceeds internal limit of 33554432 bytes

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    您正在对不存在索引的字段进行排序。 在这种情况下,存在约 32 MB 的限制 (见sort operations here) 要解决此问题,请在“time1”上创建一个索引:

    db.LOG.create_index([('time1', 1)])
    

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多