我正在尝试用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()以打印出我试图插入的对象,并抛出异常:{ {1}}。我认为这意味着我点击某种类型的对象/元素的最大大小。
对此问题的任何见解将不胜感激。
谢谢
答案 0 :(得分:0)