2

接続がほとんどないプログラムがあり、それぞれの接続を閉じる必要があります。お願い助けて。

#include <iostream>

#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>

#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>

int main(int, char**) {
    mongocxx::instance inst{};
    mongocxx::client conn{mongocxx::uri{}};

    bsoncxx::builder::stream::document document{};

    auto collection = conn["testdb"]["testcollection"];
    document << "hello" << "world";

    collection.insert_one(document.view());
    auto cursor = collection.find({});

    for (auto&& doc : cursor) {
        std::cout << bsoncxx::to_json(doc) << std::endl;
    }
    need close connection

}

conn.close() またはどうすれば閉じることができますか?

4

1 に答える 1

5

mongocxx::client実際には、接続を終了するデストラクタを持つ別の内部プライベート クライアント クラスのラッパーであるため、明示的な切断またはクローズ メソッドは提供されません。

mongocxx::client宣言を見ると、 member が含まれていますstd::unique_ptr<impl> _impl

これは、クライアント オブジェクトが破棄されたときにmongocxx::client::impl呼び出すデストラクタを実装するインスタンスへの一意のポインタです。libmongoc::client_destroy(client_t);

アプリケーションが何度も接続/再接続するmongocxx::Pool場合は、MongoDB インスタンスへの多数の接続を管理し、必要に応じてそこから接続を取得できる の使用に関心があるかもしれません。標準はスレッドセーフではないmongocxxため、マルチスレッド アプリケーションを使用している場合にも、この方法を使用することをお勧めします。mongocxx:client

于 2016-12-20T20:31:20.830 に答える