在Mongoid 2.x中,可以执行Mongoid.database.connection.close
来重置数据库连接。 Mongoid3中不再提供此特定API,重置连接的新方法是什么?
动机:在查询正在进行时(ctrl-c)中断查询将终止您的连接。任何后续查询都会挂起。此外,诸如超时之类的抛出错误也会做同样的事情(参见:http://simple10.com/rescuing-from-racktimeout-to-close-mongodb-connection)。
答案 0 :(得分:4)
我找到了解决方案!
Mongoid::Sessions.default.disconnect
或
Model.collection.database.session.disconnect
如果ctrl-c
在控制台中断查询,这将正确重置连接。
答案 1 :(得分:0)
事实证明,Mongoid3的替代mongo驱动程序Moped实际上会自动处理重试连接。
https://github.com/mongoid/moped/blob/master/lib/moped/node.rb#L115
答案 2 :(得分:0)
除了断开与特定会话的连接
Mongoid::Sessions.default.disconnect
您还可以通过以下方式断开所有会话的连接
Mongoid::Sessions.disconnect
您可以通过以下方式获取所有活动会话的列表
Mongoid.sessions