Я пытаюсь написать программу на С++ для чтения, управления и обновления моей базы данных. У меня проблема со вставкой данных в монго. Итак, для моего рабочего процесса я получаю запрос на обновление документа. Я запрашиваю документ и обновляю данные. Затем я пытаюсь обновить документ.
У меня есть функция, которая преобразует объект моего класса в BSONObj через BSONObjBuilder. Кажется, у меня проблема с большими массивами подобъектов. Например, у меня в документе есть поле под названием geo, которое выглядит так:
geo: [{"postal": 10012},{"postal":10013},...,{"postal":90210}]
и хранится в С++ как:
std::vector<mongo::BSONObj> geo;
в этом поле могут быть тысячи почтовых индексов. При выполнении:
db.get()->update("db.collection",BSON("id"<<id_), BSON($set<<updateObj));
где updateObj — это объект, который я получил от своего BSONObjBuilder, в монго ничего не обновляется. Если я уберу поле гео, все вставится.
я пытался просто сделать
db.get()->update("db.collection",BSON("id"<<id_), BSON($set<<BSON("geo" << geo)));
думая, что, возможно, необходимо делать отдельные запросы из-за размера объекта, и это также не приводит к обновлению.
Мне было интересно, не достиг ли я какого-то предела размера BSON в C++.
Единственная причина, по которой я считаю, что это ограничение по размеру, заключается в том, что, пытаясь отладить эту проблему, я попытался вызвать updateObj.toString(), чтобы распечатать объект, который я пытался вставить, и он выдал исключение: Element extends past end of object
. Я предполагаю, что это означает, что я достиг максимального размера объекта/элемента.
Любое понимание этой проблемы будет высоко оценено.
Спасибо