启动C ++应用程序时如何检查mongodb是否正在运行

时间:2017-12-04 14:17:07

标签: c++ mongodb mongo-cxx-driver

我是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 not not started”,但上面的代码似乎不起作用。 请在启动应用程序之前建议我如何检查mongodb是否正在运行

2 个答案:

答案 0 :(得分:2)

原则上,MongoDB被设计为分布式系统,每个组件都可能失败。最好的建议是为针对数据库的每个查询做好准备以使其失败。

如果尽管如此,你仍然想测试它,最简单的方法是向MongoDB发送命令。使用mongocxx::database::run_command向管理数据库发送{"ismaster" : 1}命令。

答案 1 :(得分:0)

我不确定这是否是唯一的方法,但我应该工作正常。 你可以做这样的事情

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) {
       ...
 }