2016-10-05 106 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} )