Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in.

5115 ワード

python mongo aggregate関数呼び出しエラー:python.errors.OperationFailure: Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in.
ローカル環境:
python2.7_32
MongoDB version:3.2.5
エラーの原因:
mongoメモリ制限.Aggregate関数が$groupを使用する場合、データサイズは16945 KB未満でなければなりません.
解決方法:
追加設定:allowDiskUse:true
mongoでは、次の例で変更します.
db.stocks.aggregate( [
      { $project : { cusip: 1, date: 1, price: 1, _id: 0 } },
      { $sort : { cusip : 1, date: 1 } }
   ],
   { allowDiskUse: true }
)

pythonでは、次のように変更します.(2つの方法)
方法1:
pipeline = [{"$group": {"_id": {"uid": "$uid"}, "number"{"$sum": 1}}}]
options = {'allowDiskUse':True}
queryList = rawTable.aggregate(pipeline, **options)
 
   
queryList = rawTable.aggregate([{"$group": {"_id": {"uid": "$uid"}, "number"{"$sum": 1}}}], allowDiskUse=True)
 
   
 
   
 
   
  :    ,  options,   “**”,   --> TypeError: aggregate() takes exactly 2 arguments (3 given)

参考mongo中国語コミュニティ:http://docs.mongoing.com/manual-zh/reference/command/aggregate.html#dbcmd.aggregate