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

Posted

技术标签:

【中文标题】如何在启动 C++ 应用程序时检查 mongodb 是不是正在运行【英文标题】:How to check mongodb is running or not while starting the C++ application如何在启动 C++ 应用程序时检查 mongodb 是否正在运行 【发布时间】:2017-12-04 14:17:07 【问题描述】:

我是 C++ 的初学者。我已关注 http://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/tutorial/ 本教程。他们告诉连接到正在运行的 MongoDB 实例,使用 mongocxx::client 类。我是这样做的

mongocxx::client conn_;
conn_ =  mongocxx::client(mongocxx::uriuri);

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

如果 mongodb 没有启动,它必须打印“db is not started”,但上面的代码似乎不起作用。 请建议我在启动应用程序之前如何检查 mongodb 是否正在运行

【问题讨论】:

【参考方案1】:

原则上,MongoDB 被设计为分布式系统,每个组件都可能出现故障。最好的建议是为每次对数据库执行的查询失败做好准备。

如果尽管如此,您仍想对其进行测试,最简单的方法是向 MongoDB 发送命令。使用mongocxx::database::run_command"ismaster" : 1 命令发送到管理数据库。

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何在启动 C++ 应用程序时检查 mongodb 是不是正在运行的主要内容,如果未能解决你的问题,请参考以下文章

结合 Shell 对 Koa 应用运行环境检查

我如何检查 qml 上的网络连接?

MongoDB shell 介绍

如何查看mongodb是不是安装成功

如何检查程序是不是从自动启动运行?

如何安装本地的mongo数据库之后如何安装客户端