如何使用C++驱动程序重新连接到MongoDB?
我有一个C++函数,它使用C++驱动程序将文档保存到MongoDB。它需要连接引用作为参数:如何使用C++驱动程序重新连接到MongoDB?
当我重新启动MongoDB中,我可以看到,新的连接正在取得进展。 但是,conn.isFailed()保持为真。
这可能发生由于这样的事实,当我重新连接,我使用conn
,而不是&conn
当我使用&conn
为&conn.connect("localhost");
,我得到错误MESSAGE-
error: lvalue required as unary ‘&’ operand
我该如何解决这个问题?即修改底层连接,以便conn.isFailed()在建立新连接时变为false?
您应该在mongo :: DBClientConnection :: DBClientConnection构造函数中启用_autoReconnect。
http://api.mongodb.org/cplusplus/current/classmongo_1_1_d_b_client_connection.html#a6a1a348024dd302572504b7bfb6e74a2
直到_check连接被调用时,方法返回的变量_failed isfailed()才会被设置。在将某些内容发送到数据库之前不会调用_checkConnection,因此,在调用_isFailed之前,可以调用ping命令。但是,建议的修复方法是启用_autoReconnect。
谢谢!我将继续在构造函数中启用_autoReconnect – user837208 2012-01-10 21:34:33
你的问题与使用'&'操作符或没有关系。如果您尝试使用'&',那么它只会尝试获取'connect'方法的返回值的地址。相反,请检查您是否正确断开/重新连接? – 2012-01-10 08:21:05
是的,我可以看到在MongoDB日志中重新连接成功 – user837208 2012-01-10 08:40:53