簡體   English   中英

啟動C ++應用程序時如何檢查mongodb是否正在運行

[英]How to check mongodb is running or not while starting the C++ application

我是C ++的初學者。 我遵循了http://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/tutorial/本教程。 他們告訴連接到正在運行的MongoDB實例,請使用mongocxx::client類。 我已經做到了

mongocxx::client conn_;
conn_ =  mongocxx::client(mongocxx::uri{uri});

      if(!conn_){
        std::cout<<"db is not started";
      }else{
        std::cout<<"db is  started";
      }

如果mongodb未啟動,則必須打印“ db is not start”,但以上代碼似乎無法正常工作。 在啟動應用程序之前,請建議我如何檢查mongodb是否正在運行

原則上,MongoDB被設計為分布式系統,每個組件都可能發生故障。 最好的建議是針對您對數據庫進行的每個查詢失敗都做好准備。

即使這樣,您仍然想要測試它,最簡單的方法是將命令發送到MongoDB。 使用mongocxx::database::run_command{"ismaster" : 1}命令發送到管理數據庫。

我不確定這是否是唯一的方法,但是我應該工作正常。 你可以做這樣的事情

bool conn_(){
    try{
    //createClient
    //getAnyDatabase
    //getAnyCollection
    return true;
    }
    catch(){
       return false;
    }
}

或者,您可以運行ping命令

Mongo mongo = new Mongo();
 DBObject ping = new BasicDBObject("ping", "1");
 try {
       mongo.getDB("dbname").command(ping);
 } catch (MongoException e) {
       ...
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM