#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 для извлечения частей файла, но вы можете прочитать эту спецификацию и создать свои собственные запросы, которые будут извлекать части записанных фрагментов.
Ваш конкретный драйвер может предоставлять функцию частичного извлечения файлов, для этого обратитесь к его документам.