C++ 带有C++;

C++ 带有C++;,c++,mongodb,gridfs,C++,Mongodb,Gridfs,我想从C++插入BSON对象到MangGDB GRIDFS。 我找不到有用的文件。关于C++ GRIDFS API。 你能举一个例子,如何插入或更新BSON对象在GRIDFS结构在C++中。 假设我有下面给出的一个集合 {u id:“123”,“数据”:[{C1:“value1”,“C2:“value1”}]} 如何在mongodb中将其作为gridfs插入? 注意:我试图将数据作为集合插入,但由于文档超出了文件大小限制,因此出现错误。(要插入的文档超出了maxBsonObjectSize) 例

我想从C++插入BSON对象到MangGDB GRIDFS。 我找不到有用的文件。关于C++ GRIDFS API。 你能举一个例子,如何插入或更新BSON对象在GRIDFS结构在C++中。 假设我有下面给出的一个集合

{u id:“123”,“数据”:[{C1:“value1”,“C2:“value1”}]}

如何在mongodb中将其作为gridfs插入? 注意:我试图将数据作为集合插入,但由于文档超出了文件大小限制,因此出现错误。(要插入的文档超出了maxBsonObjectSize) 例如,在上面的文档中,“数据”数组有时有超过500.000行和更多列。 提前感谢

MongoDB有一个可用于将文档插入网格系统的。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