2016-10-05 86 views
0

問題:在使用MongoDB中查詢排序,並告訴我使用allowDiskUse:true選項查詢與選擇使用聚合allowDiskUse在Mongoid

我的記憶是越來越超出。但在mongoid軌道中,聚合函數沒有傳遞任何選項。

我得到的錯誤:

Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. Aborting operation. Pass allowDiskUse:true to opt in. (16819) 

我的代碼/查詢:

result = ModelName.collection.aggregate([ 
     {"$sort" => { 
      "created_at" => 1 
     }} 
    ], {'allowDiskUse' => true}) 

我的目的:

要在mongoid查詢中使用allowDiskUse選項這樣我就可以得到排序的da ta創建時間但mongoid不支持它我想,所以我需要一些替代品。我應該做什麼的建議?

+0

你想在這裏做什麼?如果內存不足,你應該重新考慮你的聚合,添加一個'$ match'和'$ project'以儘早減少數據量。 –

+0

它不能減少,...我需要所有數據 – user1735921

+0

然後使用分頁。 –

回答

1

你可以像下面這樣做。我只想要特定的領域,因此我在查詢中添加了「$ project」。

MyModel.collection.aggregate([ {"$sort" => {"created_at" => -1}}, {"$project" => {"_id" => 1}}], {allow_disk_use: true} )