1
私はいくつかのデータをMongoDBデータベースに保存する方法を使用しています。MongoDBのC++でのinsert_many()メソッドの使い方は?
void save_data(std::vector<class_a> list){
using namespace std;
using bsoncxx::builder::stream::document;
using bsoncxx::builder::stream::finalize;
std::vector<bsoncxx::document::value> documents;
for (size_t i = 0; i < list.size(); i++){
documents.push_back(document{}
<< "field 1" << list[i].get_data_1()
<< "field 2" << list[i].get_data_2()
<< finalize);
}
collection.insert_many(documents);
}
私はリストがclass_a
の1つ以上のオブジェクトを格納していることを知っています。私はmongocxx::collection
オブジェクトcollection
のメソッドname()
を使用してアクセス可能かどうかをテストしました。それは期待どおりにその名前を返しました。だから、クライアントセットがあると思う。しかし、insert_many()
メソッドはエラーをスローします:
"mongoc_bulk_operation_execute() requires a client and one has not been set.: generic server error"
私は間違っていますか?
書かれているように、コードはコンパイルされません。 ''コレクション ''はどこから来たのですか?私が最初に推測した理由は、 '' '' mongocxx :: client'''オブジェクトが生きていないということです。 '' collection''オブジェクトの存続期間は、それを作成した '' 'client'''オブジェクトの存続期間のサブセットでなければなりません。 – acm
'collection'は' mongocxx :: collection'オブジェクトです。それはシングルトンパターン([ここを見てください](https://github.com/mongodb/mongo-cxx-driver/blob/releases/stable/examples/mongocxx/instance_management.cpp)のために生きています)。コレクション名を 'collection.name()'で表示してテストしました。 –
私はその例の著者です。そのシングルトンは '' mongocxx :: instance''オブジェクトを生きています。しかし、 '' mongocxx :: client'''は生きていません。コードの完全な動作例を示すことをお勧めします。これは、何がうまくいかないのかを簡単に把握できるようにします。 – acm