SpringBoot连接多个mongoDB数据库的方式

 1、第一步:在resource中配置mongoDB的地址(多个数据库配置方法相同)

spring.data.mongodb.数据库标识名.uri=mongodb://name:password%localhost:27017/表名

 注意:数据库标识名要唯一

2、第二步:调用数据库

方式一:将mongo注入到bean中

@Configuration
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "spring.data.mongodb.数据库标识名")
public class GongJiMongoTemplate extends AbstractMongoConfig{

    @Primary
    @Override
    @Bean(name = "oneMongoTemplate")
    public MongoTemplate getMongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }

}

将该mongo注入到需要使用的地方

@Autowired
    @Qualifier("oneMongoTemplate")
    private MongoTemplate oneMongoTemplate;

查询数据库(collectionName是表名,param是mongo的sql语句)

//查询数据
        AggregateIterable<Document> documents = oneMongoTemplate.getCollection(collectionName).aggregate(param);

方法二:编写一个配置类,返回mongo的连接

@Component
public class MongoUtils{

    @Value("${spring.data.mongodb.one.uri}")
    private String oneMongo;


    private Map<String, MongoClient> mongoClientMap = new HashMap<>();

    public MongoCollection getPrimary(String beanname){
        
        MongoClient ml = getMongoClient(oneMongo);
        MongoDatabase mongoDatabase = ml.getDatabase(beanname);
        //返回一个mongo的连接
        return mongoDatabase.getCollection(beanname);
    }
}

发送sql到mongo(cmd为编写的mongo的sql,为String类型)

//查询方法
public MongoCursor<Document> findCmd(String cmd,String beanname){
        //将传来的sql转换成JSONArray
        JSONArray cmdArr = JSONArray.parseArray(cmd);
        //建立连接
       MongoCollection pcoll = getPrimary(beanname);

        List<Map<String,Object>> retList = new ArrayList();
        List<DBObject> readValue = null;
        MongoCursor<Document> cursor=null;
        try {
            readValue =  (List<DBObject> )com.mongodb.util.JSON.parse(cmdArr.toJSONString());
            AggregateIterable<Document> aggregate = pcoll.aggregate(readValue);
            cursor = aggregate.iterator();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cursor;
    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot 中操作多个 MongoDB 数据库,可以通过配置多个 MongoTemplate 实例来实现。 1. 添加 MongoDB 的依赖 在 Maven 或 Gradle 的配置文件中添加 MongoDB 的依赖,例如: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 2. 配置多个 MongoTemplate 实例 在 application.properties 或 application.yml 配置文件中,添加多个 MongoDB连接信息,例如: ``` spring.data.mongodb.uri=mongodb://localhost:27017/test1 my.mongodb.uri=mongodb://localhost:27017/test2 ``` 然后,在 Spring Boot 的配置类中配置多个 MongoTemplate 实例,例如: ``` @Configuration public class MongoConfig { @Bean(name = "primaryMongoTemplate") @Primary public MongoTemplate primaryMongoTemplate(MongoDbFactory mongoDbFactory) { return new MongoTemplate(mongoDbFactory); } @Bean(name = "secondaryMongoTemplate") public MongoTemplate secondaryMongoTemplate(@Qualifier("secondaryMongoDbFactory") MongoDbFactory mongoDbFactory) { return new MongoTemplate(mongoDbFactory); } @Bean(name = "secondaryMongoDbFactory") public MongoDbFactory secondaryMongoDbFactory() { MongoClientURI uri = new MongoClientURI(env.getProperty("my.mongodb.uri")); return new SimpleMongoClientDbFactory(uri); } } ``` 在上面的示例中,我们配置了两个 MongoTemplate 实例,一个是 primaryMongoTemplate,连接的是默认的 MongoDB 数据库,另一个是 secondaryMongoTemplate,连接的是名为 test2 的 MongoDB 数据库。 3. 使用多个 MongoTemplate 实例 在需要使用 MongoDB 的地方,通过 @Qualifier 注解指定要使用的 MongoTemplate 实例,例如: ``` @Service public class UserService { @Autowired @Qualifier("primaryMongoTemplate") private MongoTemplate primaryMongoTemplate; @Autowired @Qualifier("secondaryMongoTemplate") private MongoTemplate secondaryMongoTemplate; public void saveUser(User user) { primaryMongoTemplate.save(user, "user"); secondaryMongoTemplate.save(user, "user"); } } ``` 在上面的示例中,我们在 UserService 类中注入了两个 MongoTemplate 实例,分别是 primaryMongoTemplate 和 secondaryMongoTemplate,然后在 saveUser 方法中分别使用了这两个实例来保存 User 对象到对应的 MongoDB 数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值