在C+中使用嵌套数组处理MONGO记录+; 我试图使用蒙哥C++ API处理一组看起来像下面的记录…“Entries”数组中的行数是可变的:13或7 { "_id" : ObjectId("541af7a4c9c7450a5a5c7e8e"), "SvId" : "SV120", "UTCTime" : "2014-09-18T15:17:56.541Z", "Interval" : 10, "HPLANC" : "DownlinkA", "Entries" : [ [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4096 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4097 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4098 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4099 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4103 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.100.10" }, { "Port" : 4102 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.100.10" }, { "Port" : 4104 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.150.10" }, { "Port" : 4100 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4100 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4150 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4151 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4152 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4153 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ] ] }

在C+中使用嵌套数组处理MONGO记录+; 我试图使用蒙哥C++ API处理一组看起来像下面的记录…“Entries”数组中的行数是可变的:13或7 { "_id" : ObjectId("541af7a4c9c7450a5a5c7e8e"), "SvId" : "SV120", "UTCTime" : "2014-09-18T15:17:56.541Z", "Interval" : 10, "HPLANC" : "DownlinkA", "Entries" : [ [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4096 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4097 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4098 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4099 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.10.20" }, { "Port" : 4103 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.100.10" }, { "Port" : 4102 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.100.10" }, { "Port" : 4104 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.150.10" }, { "Port" : 4100 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4100 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4150 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4151 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4152 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ], [ { "IPAddress" : "172.20.200.10" }, { "Port" : 4153 }, { "MessageCount" : "0" }, { "ByteCount" : "0" } ] ] },c++,arrays,mongodb,mongo-cxx-driver,C++,Arrays,Mongodb,Mongo Cxx Driver,我根据UTCTime和SvId查询集合。。。当我拿回这些记录时,我不知道如何一步一步地把它们全部看一遍 通常情况下,我只需获取一个游标,并使用“next()”遍历返回的记录集。。。但现在我有一个“条目”字段,它有7个或13个条目。如何访问这些项目中的每一项?我猜一定有某种“次地震”,我可以用它来循环通过那些 我正在浏览API和示例,但是没有太多关于嵌套数组的内容 谢谢 Rick有一个很好的示例,说明如何使用带有de MongoDB API的阵列 编辑 我举了一个例子: #include "mon

我根据UTCTime和SvId查询集合。。。当我拿回这些记录时,我不知道如何一步一步地把它们全部看一遍

通常情况下,我只需获取一个游标,并使用“next()”遍历返回的记录集。。。但现在我有一个“条目”字段,它有7个或13个条目。如何访问这些项目中的每一项?我猜一定有某种“次地震”,我可以用它来循环通过那些

我正在浏览API和示例,但是没有太多关于嵌套数组的内容

谢谢

Rick

有一个很好的示例,说明如何使用带有de MongoDB API的阵列

编辑

我举了一个例子:

#include "mongo/bson/bson.h"

#include <iostream>
#include <list>
#include <vector>

using mongo::BSONArray;
using mongo::BSONArrayBuilder;
using mongo::BSONObj;
using mongo::BSONObjBuilder;
using mongo::BSONElement;

using namespace std;

int main() {
    // Build an object
    BSONObjBuilder bob;

    // Build a array
    BSONArray arr = BSON_ARRAY(
                            BSON_ARRAY( BSON( "IPAddress" << "172.20.10.20") << BSON( "Port" << 4096) << BSON( "MessageCount" << 0) << BSON( "ByteCount" << 0) ) <<
                            BSON_ARRAY( BSON( "IPAddress" << "172.20.10.10") << BSON( "Port" << 4100) << BSON( "MessageCount" << 0) << BSON( "ByteCount" << 0) ) <<
                            BSON_ARRAY( BSON( "IPAddress" << "172.20.10.10") << BSON( "Port" << 4150) << BSON( "MessageCount" << 0) << BSON( "ByteCount" << 0) ) <<
                            BSON_ARRAY( BSON( "IPAddress" << "172.20.10.10") << BSON( "Port" << 4152) << BSON( "MessageCount" << 0) << BSON( "ByteCount" << 0) )
                            );
    bob.appendArray("Entries", arr);

    // Create the object
    BSONObj an_obj = bob.obj();
    cout << "BSON: "<< an_obj << endl;

    // Print the array out
    vector<BSONElement> array = an_obj["Entries"].Array();
    for (vector<BSONElement>::iterator ar = array.begin(); ar != array.end(); ++ar){
        cout << *ar << endl;
        vector<BSONElement> elem = ar->Array();
        for (vector<BSONElement>::iterator it = elem.begin(); it != elem.end(); ++it){
            cout << *it << endl;
        }
    }
    cout << endl;

    return 0;
}

我希望这就是你想要的!让我知道

Thx…但我也发现了。对于双嵌套数组,它确实没有帮助——您可能认为它只需要额外的间接寻址级别。但是,它不。。。我没有一个数组--通过数组()访问。数组()。。甚至是数组()[0]。数组()似乎不起作用。我一直在尝试所有的排列,但没有一个对这个集合起作用。他们都抛出了一个std异常。昨晚我构建了一个示例,请参阅我的第一篇帖子!如果是你在找,请告诉我!唯一能让我接近(并且不会引发异常)的是访问返回的BSONObj。查询(以及后续的next())是
dsuPoint.getfielddotterd(“Entries.0.0.IPAddress”)
哪个返回“EOO”???
BSON: { Entries: [ [ { IPAddress: "172.20.10.20" }, { Port: 4096 }, { MessageCount: 0 }, { ByteCount: 0 } ], [ { IPAddress: "172.20.10.10" }, { Port: 4100 }, { MessageCount: 0 }, { ByteCount: 0 } ], [ { IPAddress: "172.20.10.10" }, { Port: 4150 }, { MessageCount: 0 }, { ByteCount: 0 } ], [ { IPAddress: "172.20.10.10" }, { Port: 4152 }, { MessageCount: 0 }, { ByteCount: 0 } ] ] }
0: [ { IPAddress: "172.20.10.20" }, { Port: 4096 }, { MessageCount: 0 }, { ByteCount: 0 } ]
0: { IPAddress: "172.20.10.20" }
1: { Port: 4096 }
2: { MessageCount: 0 }
3: { ByteCount: 0 }
1: [ { IPAddress: "172.20.10.10" }, { Port: 4100 }, { MessageCount: 0 }, { ByteCount: 0 } ]
0: { IPAddress: "172.20.10.10" }
1: { Port: 4100 }
2: { MessageCount: 0 }
3: { ByteCount: 0 }
2: [ { IPAddress: "172.20.10.10" }, { Port: 4150 }, { MessageCount: 0 }, { ByteCount: 0 } ]
0: { IPAddress: "172.20.10.10" }
1: { Port: 4150 }
2: { MessageCount: 0 }
3: { ByteCount: 0 }
3: [ { IPAddress: "172.20.10.10" }, { Port: 4152 }, { MessageCount: 0 }, { ByteCount: 0 } ]
0: { IPAddress: "172.20.10.10" }
1: { Port: 4152 }
2: { MessageCount: 0 }
3: { ByteCount: 0 }