如何重置 mongoid 3 数据库连接



在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

最新更新