将数据附加到现有 gridfs 文件
正如我所看到的,java mongo 驱动程序不提供从现有 gridFS 文件 com.mongodb.gridfs.GridFSFile
获取 OutputStream
的功能,
我必须创建 GridFSInputFile
> 直接或使用gridFs.createFile()
方法。
是缺少java驱动还是gridfs的限制?
除了创建新文件/删除旧文件之外,您能否建议任何解决方法?
谢谢
As i can see java mongo driver does not provide capability to get OutputStream
from existing gridFS file com.mongodb.gridfs.GridFSFile
I have to create GridFSInputFile
directly or use gridFs.createFile()
method.
Is it a lack of java driver or a restriction of gridfs ?
Could you suggest any workaround except create new file/delete old one ?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
GridFS 不是 MongoDB 的核心功能,而是存储二进制数据及其元数据的约定。您应该能够以通常的方式修改
fs.chunks
集合中的任何文档,同时保持fs.files
中相应文档的完整性。主要问题是重新计算 MD5 校验和,但据我所知它没有在任何地方使用,只是一个“免费”的奖励。无论如何,仍然可以进行仅附加修改(请参阅恢复下载的 MD5 摘要)。因此,要附加到现有的 GridFS 文件,您需要在
fs.files
中找到相应的文档。然后,根据最后一个块填充率(length
%chunkSize
== 0),您可以重写fs.chunks
中的最后一个块文档,尊重 < code>chunkSize,和/或简单地添加带有递增n
字段的新块。接下来更新fs.files
中的length
以及可能的其他元数据。GridFS is not a core feature of MongoDB but a convention of storing binary data with accompanying metadata. You should be able to modify any document in
fs.chunks
collection in a usual manner while keeping corresponding document infs.files
intact. The main problem will be recalculating MD5 checksum, but AFAIK it isn't used anywhere and is just a "free" bonus. Anyway it's still possible for appending-only modification (see MD5 digest of a resumed download).So to append to an existing GridFS file you need to locate corresponding document in
fs.files
. Then depending on last chunk filling ratio (length
%chunkSize
== 0) you either rewrite the last chunk document infs.chunks
respecting thechunkSize
, and/or simply add new chunk(s) with incrementingn
field. Next updatelength
infs.files
and possibly other metadata.