Создание запроса для получения некоторых определенных частей из файла GRIDFS

#mongodb #spring-boot #mongodb-query #gridfs #gridfs-stream

Вопрос:

В моем приложении Spring Boot я использовал GridFS для хранения больших файлов в своей базе данных. Чтобы найти определенные файлы, я использую обычные запросы к коллекции файлов:

 GridFSFile file = gridFsTemplate.findOne(Query.query(Criteria.where(ID).is(id)));
 

но при таком подходе я получаю весь файл целиком.

Мой вопрос в том, как создать несколько запросов, не загружая весь файл в память? Мои сохраненные файлы-это книги ( в формате pdf), и предположим, что я хочу получить содержимое с определенной страницы, не загружая всю книгу в память. Я предполагаю, что мне придется использовать коллекцию фрагментов и выполнить некоторые операции с фрагментами, но я не могу найти, как это сделать.

Ответ №1:

GridFS описана здесь. Драйверы не предоставляют стандартизированный API для извлечения частей файла, но вы можете прочитать эту спецификацию и создать свои собственные запросы, которые будут извлекать части записанных фрагментов.

Ваш конкретный драйвер может предоставлять функцию частичного извлечения файлов, для этого обратитесь к его документам.