将数据附加到现有 gridfs 文件

发布于 2024-11-14 05:47:37 字数 290 浏览 8 评论 0原文

正如我所看到的,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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如痴如狂 2024-11-21 05:47:37

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 in fs.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 in fs.chunks respecting the chunkSize, and/or simply add new chunk(s) with incrementing n field. Next update length in fs.files and possibly other metadata.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文