2016-10-05 2 views
0

Проблема:Использование совокупности с опциями allowDiskUse в Mongoid

Моя память становится превышена при использовании рода в MongoDB запросе и говорит мне, чтобы использовать 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}) 

Моя цель:

Чтобы использовать allowDiskUse опцию в Mongoid запросе так что я могу получить отсортированную да ta созданным временем, но mongoid не поддерживает его, я думаю, поэтому мне нужна альтернатива. Любые предложения о том, что я должен делать?

+0

Что вы пытаетесь достичь здесь? Если у вас закончилась нехватка памяти, вам действительно нужно переосмыслить свою агрегацию, добавить «$ match» и «$ project», чтобы сократить количество данных раньше. –

+0

его нельзя уменьшить, мне нужны все данные – user1735921

+0

, затем используйте разбивку на страницы. –

ответ

1

Вы можете сделать это, как показано ниже. Я хотел только конкретное поле, поэтому я добавил «$ project» в запросе.

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

Смежные вопросы