MongoDBテストデータベースに次のドキュメントがあります。
> db.a.find().pretty()
{
"_id" : ObjectId("5113d680732fb764c4464fdf"),
"x" : [
{
"a" : 1,
"b" : 2
},
{
"a" : 3,
"b" : 4
}
]
}
「x」配列の要素にアクセスして処理しようとしています。ただし、次のコードに示すように、MongoドライバーはそれをJSONドキュメントの配列としてではなく、日付型として識別しているようです。
auto_ptr<DBClientCursor> cursor = c.query("test.a", BSONObj());
while (cursor->more()) {
BSONObj r = cursor->next();
cout << r.toString() << std::endl;
}
出力は次のとおりです。
{ _id: ObjectId('51138456732fb764c4464fde'), x: new Date(1360233558334) }
http://api.mongodb.org/cplusplusとhttp://docs.mongodb.org/ecosystem/drivers/cpp-bson-array-examples/のドキュメントに従おうとしていますが、かなり貧弱です。配列を処理する他の例を見つけましたが、常に単純な型(整数の配列など)を使用していますが、配列内の要素がBSONドキュメント自体である場合はそうではありません。
どの要素が一般的なBSON要素である配列を処理するコード例がありますか?