Как вставить 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.

Надеюсь это поможет!

Другие вопросы по тегам