GridFS - это не основная функция MongoDB, а соглашение о хранении двоичных данных с сопутствующими метаданными. Вы должны иметь возможность изменять любой документ в коллекции fs.chunks
обычным способом, сохраняя при этом соответствующий документ в fs.files
без изменений. Основной проблемой будет пересчет контрольной суммы MD5, но AFAIK она нигде не используется и является просто «бесплатным» бонусом. В любом случае, это все еще возможно только для добавления изменений (см. Дайджест MD5 для возобновленной загрузки ).
Таким образом, чтобы добавить существующий файл GridFS, вам нужно найти соответствующий документ в fs.files
. Затем в зависимости от коэффициента заполнения последнего чанка (length
% chunkSize
== 0) вы либо переписываете последний документ чанка в fs.chunks
с учетом chunkSize
, и / или просто добавляете новый чанк (и) с приращением n
поле. Следующее обновление length
в fs.files
и, возможно, другие метаданные.