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