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