Mongodb GridFs with C++
Mongodb GridFs with C++
我想将BSON对象从C++插入mongodb-gridfs。我找不到有用的医生。关于c++gridfs API。你能举一个如何在c++中插入或更新gridfs结构上的BSON对象的例子吗。假设我有一个下面给出的集合;
{"_id":"123","data":[{"C1":"value1","C2":"value1"}]}
如何在mongodb中将其作为gridfs插入?附言:我试图将数据作为集合插入,但由于文档超过了文件大小限制,所以出现了错误。(要插入的文档超过maxBsonObjectSize)例如,在上面的文档中,"数据"数组有时有超过500000行和更多列。提前感谢
MongoDB C++驱动程序有一个名为GridFS的类,它将允许您将文档插入到网格系统中。GridFS被设计为对抽象为文件的东西进行操作,它将输入作为字节流读取,而不是像BSON对象这样的结构化东西。您可以将大型BSON对象转换为字符串来存储它们:
GridFS grid = new GridFS(*client, "database_name");
const char data[] = myLargeBSONObj.toString();
BSONObj result = grid->storeFile(data, sizeof data, "filename");
或者,您可以将大型对象存储在一个文件中,并将它们流式传输到GridFS中:
BSONObj result = grid->storeFile("path/to/file", "filename");
一旦文件插入系统,GridFS将不允许您更新该文件。在定义的API中没有安全的方法允许在不遇到竞争条件的情况下进行更新。要"更新"GridFS文件,您必须从系统中读取它,在应用程序中更改它,然后将它作为新文件重新插入GridFS。这既缓慢又乏味。如果您需要执行更新,我建议您重新设计您的模式,使您的文档小于16MB。
相关文章:
- Problems with std::cin.fail()
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- DLL Made with CMake 使程序崩溃
- QtCreator with C 库中的链接器问题
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- specialized std::default_delete with QQmlComponent
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- Inference pytorch C++ with alexnet and cv::imread image
- Pybind11: init<> with lambda
- Incomings Call with Android Sip stack in Embarcadero C++ bui