5


MongoDB マルチテナンシーに関する問題に直面しています。2 つの異なる mongoDB データベース (db1 と db2) があります。これらは両方とも異なる資格情報を持っています。

db1 資格情報:ユーザー名:
管理者
パスワード: passwd

db2 資格情報:ユーザー
名: admin1
パスワード: passwd1

実行時にあるデータベースから別のデータベースに切り替える必要があります。db1 資格情報で mongoTemplate を自動配線しましたが、db2 資格情報でテンプレートを更新できません。これは可能ですか?はいの場合、どのように?そうでない場合は、別の資格情報を使用して実行時にデータベースを切り替える他の方法を教えてください。

「SimpleMongoDbFactory」を認識していることに注意してください。「SimpleMongoDbFactory」を拡張し、「getDb」メソッドをオーバーライドして、マルチテナンシーのために必要な dbName を super.getDb("dbName") に渡すことができます。ただし、これは、資格情報が異なる 2 つのデータベースでは機能しません。

4

2 に答える 2

4

MongoCredential各 DB に対してを作成し、それらを に渡し、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 に答える