14

我正在使用 Mongoid 与带有导轨的 Mongoid.override_database("database_name") 与多个数据库交谈。如何以编程方式查找当前数据库?

会话上的 Mongoid 文档:http://mongoid.org/en/moped/docs/driver.html定义了覆盖数据库的方法,但没有定义获取当前数据库使用的方法。

4

5 回答 5

25

知道了!

Mongoid.default_session.options[:database]
于 2012-10-23T21:30:13.123 回答
8

得到这个的新方法是

Mongoid::Config.clients["default"]["database"]

你也可以看看

Mongoid::Config.clients

看看还有什么可用的。

于 2016-09-22T00:38:23.440 回答
4

如果您想要覆盖的数据库,您实际上需要使用

Mongoid::Threaded.database_override
于 2012-12-25T14:13:31.377 回答
2

运行 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 中选择数据库名称。如果使用分片配置,可能会有多个

于 2017-08-22T07:29:32.153 回答
2

Mongoid 版本 7.0.5

Mongoid.client(:default).database
于 2020-08-06T14:38:18.393 回答