Когда я пытаюсь вставить документ в MongoDB с помощью драйвера C ++, я получаю следующее сообщение об исключении:
Wed Feb 27 15:21:38 Assertion failure p src/mongo/client/dbclientinterface.h 1096
0 assertion src/mongo/client/dbclientinterface.h:1096
Из того, что я могу сказать, кажется, что-то связано с номером порта? dbclientinterface.h: 1096 содержит следующую строку:
MessagingPort& port() { verify(p); return *p; }
mongo::DBClientConnection DBConn( "localhost" );
mongo::DBClientConnection DBConn( "localhost:27017" ); // I've also tried this...
while( m_Entries.size() ){
JsonBox::Value Data( m_Entries.front() );
try {
std::stringstream JSONDoc;
mongo::BSONObj BSONDoc;
Data["doc"].writeToStream( JSONDoc, false );
BSONDoc = mongo::fromjson( JSONDoc.str() );
// std::cout << Data["ns"].getString() << std::endl;
// std::cout << BSONDoc.toString() << std::endl;
// This is where the exception is thrown...
m_DBConn.insert( Data["ns"].getString(), BSONDoc );
} catch( const mongo::DBException& e ){
std::cout << e.toString() << std::endl;
}
m_EntriesMutex.lock();
m_Entries.pop();
m_EntriesMutex.unlock();
}
Я коротко покопался в документации и наткнулся на поразительный факт, что вы не можете подключиться к базе данных mongodb из конструктора. Я должен был изменить это:
mongo::DBClientConnection DBConn( "localhost" );
к этому:
mongo::DBClientConnection DBConn;
DBConn.connect( "localhost" );
Других решений пока нет …