Как проверить, работает mongodb или нет при запуске приложения C++

Я новичок в 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 found", но приведенный выше код не работает. Подскажите пожалуйста как проверить работает mongodb или нет перед запуском приложения

2 ответа

В принципе 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) {
       ...
 }
Другие вопросы по тегам