【发布时间】:2014-07-02 23:59:56
【问题描述】:
我正在尝试用 C++ 编写一个程序来读取、操作和更新我的数据库。我在将数据插入 mongo 时遇到问题。因此,对于我的工作流程,我收到了某种类型的更新文档的请求。我查询文档,并更新数据。然后我尝试对文档进行更新。
我有一个函数可以通过 BSONObjBuilder 将我的类对象转换为 BSONObj。我似乎遇到了大型子对象数组的问题。例如,我的文档中有一个名为 geo 的字段,如下所示:
geo: [{"postal": 10012},{"postal":10013},...,{"postal":90210}]
在 C++ 中存储为:
std::vector<mongo::BSONObj> geo;
此字段中可能包含数千个邮政编码。做的时候:
db.get()->update("db.collection",BSON("id"<<id_), BSON($set<<updateObj));
updateObj 是我从 BSONObjBuilder 获得的 obj,在 mongo 中没有任何更新。如果我删除地理字段,所有内容都会被插入。
我试着去做
db.get()->update("db.collection",BSON("id"<<id_), BSON($set<<BSON("geo" << geo)));
认为由于 obj 的大小可能有必要进行单独的查询,这也导致没有更新。
我想知道我是否以某种方式在 C++ 中达到了某种 BSON 大小限制。
我认为这是大小限制的唯一原因是,在尝试调试此问题时,我尝试调用 updateObj.toString() 以打印出我尝试插入的对象,但它引发了异常:@ 987654325@。我假设这意味着我达到了某种类型的对象/元素的最大尺寸。
任何对此问题的见解将不胜感激。
谢谢
【问题讨论】: