在Mongoid中使用带有选项的聚合allowDiskUse

时间:2016-10-05 09:52:13

标签: ruby-on-rails mongoid

问题:

在MongoDB查询中使用sort时,我的内存被超出,并告诉我在查询中使用allowDiskUse:true选项。但是在rails 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选项,以便我可以按创建时间获取排序数据,但mongoid不支持它我想,所以我需要一些替代方案。关于我应该做什么的任何建议?

1 个答案:

答案 0 :(得分:2)

你可以像下面这样做。我只想要特定字段,因此我在查询中添加了“$ project”。

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