Как вставить BSONObj в другой BSONObj в C++ (Mongo)
Мне нужно что-то вроде этого:
{
"Field1" : "Value1",
"Field2" : "Value2",
"Fields3": [
{ "Field311" : Value311, "Field312" : Value312},
{ "Field321" : Value321, "Field322" : Value322},
{ "Field331" : Value323, "Field333" : [
... some more fields here
]}
]
}
Я получаю Fields1-2 из строки json и конвертирую их в mongo::BSONObj. Затем я добавляю Field3 в корень следующим образом:
mongo::BSONArray arr;
root["Field3"].Obj=arr;
После этого я хочу заполнить Field3 в цикле, но не могу понять, как правильно добавить BSONObj в массив. Я нашел метод "Добавить" в драйвере C#, но в C++ такого нет. Google советует мне использовать ArrayBuilder, но я не могу понять, как. Пожалуйста, скажите мне, что мне делать? Некоторые примеры были бы очень полезны.
Кроме того, вопрос: почему существуют BSONObj и BSONElement, некоторые сборщики и т. Д...? Все кажется очень сложным после очень простого JsonCpp (где все делается простым использованием операторов [] и = и метода append()).
1 ответ
Простой пример использования BSONArrayBuilder можно найти здесь: http://www.mongodb.org/pages/viewpage.action?pageId=19562815
И соответствующую документацию можно найти здесь: http://api.mongodb.org/cplusplus/current/classmongo_1_1_b_s_o_n_array_builder.html
JsonCpp - это независимо разработанная библиотека, и поэтому существует много различий между тем, как она работает, и тем, как работает реализация BSON в MongoDB - к лучшему или к худшему. Библиотека BSON широко используется повсеместно в MongoDB, поэтому ее требования сильно отличаются от требований JsonCpp.
Надеюсь это поможет!