5


我面临一个关于 MongoDB 多租户的问题。我有两个不同的 mongoDB 数据库(db1 和 db2)。这两者都有不同的凭据。

db1 凭据
用户名:管理员
密码:passwd

db2 凭据:用户名
:admin1
密码:passwd1

我需要在运行时从一个数据库切换到另一个数据库。我已经使用 db1 凭据自动连接了 mongoTemplate,但现在我无法使用 db2 凭据更新模板。这可能吗?如果是,如何?如果没有,请告诉我在运行时使用不同凭据切换数据库的任何其他方式。

请注意,我知道“SimpleMongoDbFactory”。可以扩展“SimpleMongoDbFactory”并可以覆盖“getDb”方法并在 super.getDb(“dbName”) 中传递所需的 dbName 以实现多租户。但是,这不适用于具有不同凭据的两个数据库。

4

2 回答 2

4

如果您MongoCredential为每个数据库创建一个并将它们MongoClient传递给您传递给您的SimpleMongoDbFactory

    MongoCredential credential1 = MongoCredential.createCredential("admin", db1, "password");
MongoCredential credential2 = MongoCredential.createCredential("admin1", db2, "password1");
    MongoClient mongoClient = new MongoClient(new ServerAddress(), Arrays.asList(credential1, credential2));
于 2017-01-03T15:02:33.193 回答
0

创建独立的 MongoTemplate 实例,每个实例都有自己的凭据,并在运行时选择适当的。

每个连接都是使用凭据建立的,因此如果您在现有连接上更改它们,您实际上是在破坏连接并创建一个新连接,并且不会利用池。

于 2017-01-03T16:51:59.497 回答