我正在使用带有rails的Mongoid使用Mongoid.override_database(“database_name”)与多个数据库进行通信。如何以编程方式查找当前数据库?
会话中的Mongoid文档:http://mongoid.org/en/moped/docs/driver.html定义覆盖数据库的方法,但没有定义获取当前正在使用的数据库的方法。
答案 0 :(得分:25)
知道了!
Mongoid.default_session.options[:database]
答案 1 :(得分:5)
获得此功能的新方法是
Mongoid::Config.clients["default"]["database"]
你也可以看看
Mongoid::Config.clients
看看还有什么可用。
答案 2 :(得分:4)
如果您想要覆盖数据库,则实际需要使用
Mongoid::Threaded.database_override
答案 3 :(得分:2)
运行Mongoid.default_session.options [:database]会出现default_session无效的错误。它现在是default_client。这非常有效。
在没有[:database]的情况下运行它以获取所有选项并查看数据库的完整配置。
Mongoid :: Config.clients [“default”] [“database”]假设您使用uri版本的mongoid.yml NOT 。在所有情况下你都会得到零。使用Mongoid :: Config.clients [“default”]获取当前数据库的完整配置,或使用Mongoid :: Config.clients [“default”] ['uri']为您提供完整的uri。
从最后一个端口号/后面的URI中选择数据库名称。可能有多个使用分片配置
答案 4 :(得分:1)
Mongoid版本7.0.5
Mongoid.client(:default).database