如何使用C ++驱动程序重新连接到MongoDB?

时间:2012-01-10 08:11:18

标签: c++ exception mongodb exception-handling compiler-errors

我是一个C ++函数,它使用C ++驱动程序将文档保存到MongoDB。它将连接引用作为参数:

http://pastebin.com/jwRDhNWQ

当我重新启动MongoDB时,我可以看到正在建立新的连接。 但是,conn.isFailed()仍然是正确的。

这种情况可能会发生,因为当我重新连接时,我使用的是conn而不是&conn 当我在&conn中使用&conn.connect("localhost");时,会收到错误消息 -

error: lvalue required as unary ‘&’ operand

我该如何解决这个问题?即修改底层连接,以便在建立新连接时conn.isFailed()变为false?

1 个答案:

答案 0 :(得分:1)

您应该在mongo :: DBClientConnection :: DBClientConnection构造函数中启用_autoReconnect。
http://api.mongodb.org/cplusplus/current/classmongo_1_1_d_b_client_connection.html#a6a1a348024dd302572504b7bfb6e74a2

在调用_check Connection之前,方法isfailed()返回的变量_failed不会设置。在将某些内容发送到数据库之前不会调用_checkConnection,因此可以在调用_isFailed之前调用ping命令。但是,建议的修复方法是启用_autoReconnect。