2016-03-30 4 views
0

BSONElementクラスは、例えば、BSON要素でBSONObj「符号化」を返すembeddedObject()方法があります直接的な方法でBSONElementからBSONArray取得

// being 'be' a BSONElement object 
BSONObj b = be.embeddedObject(); 

しかし、時々BSONElementオブジェクトがBSONArray(派生クラスをコードBSONObjから)私はそれを直接取得したいと思います。

// being 'be' a BSONElement object 
BSONArray b = be.embeddedArray(); 

ような何かが、私はthe MongoDB C++ driver documentation reference that I knowembeddedArray()または類似を見つけることがあります。

私はBSONElementクラスでArray()方法を見出したが、それは、ベクトルの各要素は異なる種類、すなわち文字列の可能性を考慮に入れて(はるかに複雑になりstd::vector<BSONElement>とベクターコンテンツに基づいて同等BSONArray構成を返します。 、数値、他のBSONオブジェクトや配列など)。

BSONArrayをBSONElementに直接エンコードする方法はありますか?

答えて

0

BSONArrayにキャストすると、次のように、働くことを思わ:

BSONArray b = (BSONArray) be.embeddedObject(); 

このキャストは、一般的なケースでは安全ではないが、type()と組み合わせて、我々はbeが実際に埋め込まれた配列を保持していることを確認することができます。

しかし、私はまだもっとスマートな方法が可能かどうか疑問に思っています...代替手段でこの質問に新しい回答を追加してください。

関連する問題