sql >> データベース >  >> NoSQL >> MongoDB

Spring Bootアプリケーションで複数のmongodbデータベースを使用するにはどうすればよいですか?

    以下の手順に従って、複数のmongodbデータソースを設定してください。

    1. 以下のようにapplication.propertiesでプライマリおよびセカンダリmongodbプロパティを定義し、データベースの詳細をそれらに置き換えてください:

      ######Primary Mongo DB########################
      spring.data.mongodb.host=localhost
      spring.data.mongodb.database=primary
      spring.data.mongodb.port=27017
      spring.data.mongodb.password=*******
      spring.data.mongodb.username=*******
      
      ###########Secondary MongoDB#####################
      mongodb.host=localhost
      mongodb.port=27017
      mongodb.database=secondary
      mongodb.username=******
      mongodb.password=******
      
    2. 次に、複数のMongoDb構成を追加します。

      @Configuration
      public class MultipleMongoConfig {
      
      @Primary
      @Bean(name = "primary")
      @ConfigurationProperties(prefix = "spring.data.mongodb")
      public MongoProperties getPrimary() {
          return new MongoProperties();
      }
      
      @Bean(name = "secondary")
      @ConfigurationProperties(prefix = "mongodb")
      public MongoProperties getSecondary() {
          return new MongoProperties();
      }
      
      @Primary
      @Bean(name = "primaryMongoTemplate")
      public MongoTemplate primaryMongoTemplate() throws Exception {
          return new MongoTemplate(primaryFactory(getPrimary()));
      }
      
      @Bean(name = "secondaryMongoTemplate")
      public MongoTemplate secondaryMongoTemplate() throws Exception {
          return new MongoTemplate(secondaryFactory(getSecondary()));
      }
      
      @Bean
      @Primary
      public MongoDbFactory primaryFactory(final MongoProperties mongo) throws Exception {
          return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
                  mongo.getDatabase());
      }
      
      @Bean
      public MongoDbFactory secondaryFactory(final MongoProperties mongo) throws Exception {
          return new SimpleMongoDbFactory(new MongoClient(mongo.getHost(), mongo.getPort()),
                  mongo.getDatabase());
      }
      

      }

    3. 次に、EnableMongoRepositoriesを有効にします プライマリの場合はセカンダリです。必ずbasePackages = "com.example.springbootmultipledatasource.primary.repository"を変更してください。 ここにリポジトリパッケージ

      @Configuration
      @EnableMongoRepositories(basePackages = 
      "com.example.springbootmultipledatasource.primary.repository",
          mongoTemplateRef = "primaryMongoTemplate")
       public class PrimaryMongoConfig {
      
       }
      

    セカンダリMongoテンプレート:ここでセカンダリリポジトリパッケージを変更してくださいbasePackages = "com.example.springbootmultipledatasource.secondary.repository

        @Configuration
        @EnableMongoRepositories(basePackages = "com.example.springbootmultipledatasource.secondary.repository",
            mongoTemplateRef = "secondaryMongoTemplate")
       public class SecondaryMongoConfig {
       }
    

    これで、ドキュメント、リポジトリ、サービス、コントローラーを作成できます。これで準備完了です。以下は、作成または変更できるプロジェクト構造です。




    1. 条件付きで複数の行を更新する

    2. json文字列を使用したC#mongoクエリ

    3. MongoError:サーバーインスタンスプールが破棄されました

    4. ジェネレータを使用したPyMongoの一括書き込み操作機能