Я пытаюсь выполнить запрос агрегата mongo db из java, но размер буфера превышает 16 МБ. Есть ли способ настроить размер буфера или любой другой способ обхода. У меня нет возможности создавать коллекцию на стороне сервера mongo, а также у меня нет никакой утилиты mongo, такой как mongo.exe или mongoExport.exe в моей клиентской системе.Java/Grails - агрегация MongoDB 16MB ограничение размера буфера
Вот небольшая часть кода
if (!datasetObject?.isFlat && jsonFor != 'collection-grid'){
//mongoPipeline = new AggregateArgs (Pipeline = pipeline, AllowDiskUse = true, OutputMode = AggregateOutputMode.Cursor)
output= dataSetCollection.aggregate(pipeline)
}else{
output= dataSetCollection.aggregate(project)
}
У меня есть 100K записей с 30 поля. Когда я запрашиваю 5 полей для всех записей 100K, я получаю результат (успех). Но когда я делаю запрос для 100K записей со всеми полями, они бросают ниже ошибки.
Проблема заключается в том, что я пытаюсь получить доступ ко всем документам из коллекции, включая , все поля с документом размером более 16 МБ.
Фактическая ошибка:
com.mongodb.CommandFailureException: { "serverUsed" : "127.0.0.1:27017" , "errmsg" : "exception: aggregation result exceeds maximum document size (16MB)" , "code" : 16389 , "ok" : 0.0
Как решить эту проблему?
Использование MongoDB-3.0.6
Примечание: GridFS не подходит для моих критериев. Потому что мне нужно получить все документы в одном запросе, а не один документ.
Ну, нет. Кроме того, нет никакого шанса получить предложение лучшего подхода, не разделяя код, который вы сейчас пытаетесь сделать. –
@BlakesSeven см. Обновленный вопрос. Я сохранил код. –