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;
    }

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐