有没有办法使用 mongocxx 驱动程序从 GridFS 集合的文件下载任意范围?

Is there a way for downloading arbitrary ranges from a GridFS collection's file using the mongocxx driver?

本文关键字:集合 文件下载 任意 范围 GridFS 驱动程序 mongocxx 有没有      更新时间:2023-10-16

我需要使用 GridFS 规范随机访问存储在 MongoDB 中的文件。似乎C++驱动程序(mongocxx(没有提供执行此操作的接口。我可以从mongocxx::gridfs::bucket创建一个mongocxx::gridfs::downloader对象,但是我能找到的唯一"较低级别"读取操作是

std::size_t read(std::uint8_t *buffer, std::size_t length)

我想念的是第三个参数std::size_t offset.我目前的解决方法是完全绕过mongocxx::gridfs API,即查询块集合并手动创建所需的缓冲区。但我实际上想为此使用驱动程序的 API。

mongocxx 驱动程序中的用例是否有我没有看到的 API,或者我应该编写功能请求?

在仔细研究了所有相关来源并在mongodb用户组中也讨论了这个问题之后,这个问题的答案是

不,到目前为止,还没有使用 mongo C++ 驱动程序的 GridFS API 进行部分文件检索的 API。

我已经在MongoDB JIRA系统中为它提交了一个功能请求。

我相信可以通过

c++ 驱动程序对块进行手动迭代来实现。你必须弄清楚哪些块包含这个范围的数据,然后读取它们并将获得的数据合并在一起......