2016-11-30 5 views
0

文書に配列を追加するときに、文書ストリームに投げるときにopen_arrayとclose_arrayが同時に来なければなりません。 'close_array'を追加すると、最後の行で次のコードが失敗します(コンパイル時)。MongoDB C++、配列に文書を追加できません

vector<string> List; 
... 

document Doc; 
Doc <<"List" <<open_array; 
for (string Str: List) { 
    Doc <<Str; 
} 
Doc <<close_array; 

しかし、私は同時に文書に追加するには「リスト」内の要素の数を知りません。 MongoDBにはまだC++ドライバの例がありません。

このコードは機能しますが、 'List'の項目数はわかりません。

Doc 
<<open_array 
<<List[0] <<List[1] <<List[2] <<... 
<<close_array; 

G ++エラー:

content.cpp:65:7: error: no match for ‘operator<<’ (operand types are ‘bsoncxx::v_noabi::builder::stream::document’ and ‘const bsoncxx::v_noabi::builder::stream::close_array_type’) 
    Doc <<close_array; 
    ~~~~^~~~~~~~~~~~~ 
compilation terminated due to -Wfatal-errors. 

答えて

0

は、それが(ドキュメントに自分自身を 'close_array' を追加することができ、それは、配列ビルダーを通して追加する必要がありませんAdding a BSON Array to a MongoDB 3.2 document and extracting the values back (MongoCXX 3.2) (C++ 11)

から解決策を見つけました'auto'と入力すると、実際のタイプを見つけるためにそれを掘り起こしませんでした)。上記のコードは正常に動作しますが、それはあまりにも3.0で動作するかどうか、次はない

auto Array = Doc <<"List"; 
Array <<open_array; 
for (string Str: List) 
    Array <<Str; 
Array <<close_array; 
+0

あなたが知っているだろうことに留意すべき

auto Array = Doc <<"List" <<open_array; for (string Str: List) Array <<Str; Array <<close_array; 

?私はそれがないと思う... –

+0

https://github.com/mongodb/mongo-cxx-driver/archive/r3.1.0.tar.gzからmongodb C++ドライバ3.1.0をビルド – johnlowvale

+0

私の答えのコードは正常に動作します – johnlowvale

関連する問題