【问题标题】: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::uri{uri});
if(!conn_){
std::cout<<"db is not started";
}else{
std::cout<<"db is started";
}
如果 mongodb 没有启动,它必须打印“db is not started”,但上面的代码似乎不起作用。
请建议我在启动应用程序之前如何检查 mongodb 是否正在运行
【问题讨论】:
标签:
c++
mongodb
mongo-cxx-driver
【解决方案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) {
...
}