如何将 BSONObj 插入另一个 BSONObj in C++ (Mongo)

How to insert BSONObj into another BSONObj in C++ (Mongo)

本文关键字:BSONObj C++ Mongo in 另一个 插入      更新时间:2023-10-16

我需要这样的东西:

{
    "Field1" : "Value1",
    "Field2" : "Value2",
    "Fields3": [
              { "Field311" : Value311, "Field312" : Value312},
              { "Field321" : Value321, "Field322" : Value322},
              { "Field331" : Value323, "Field333" : [
                              ... some more fields here
              ]}
     ]
}

我从json字符串中获取Fields1-2并将它们转换为mongo::BSONObj。然后我像这样将 Field3 添加到根目录:

mongo::BSONArray arr;
root["Field3"].Obj=arr;

之后,我想循环填充 Field3,但我不明白如何将 BSONObj 正确添加到数组中。我在 C# 驱动程序中找到了"Add"方法,但C++没有这样的东西。谷歌建议我使用ArrayBuilder,但我不明白怎么做。请告诉我,我该怎么办?一些例子将非常有用。

另外,还有一个问题:为什么有BSONObj和BSONElement,一些建筑商等等?在超级简单的 JsonCpp 之后,一切似乎都非常复杂(其中一切都通过简单地使用 [] 和 = 运算符和 append() 方法完成)。

使用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是一个独立开发的库,因此它的工作方式与MongoDB的BSON实现方式之间存在许多差异 - 无论是好是坏。BSON库在整个MongoDB中被广泛使用,因此它的要求与JsonCpp的要求完全不同。

希望这有帮助!