springboot——集成MongoDB

本文详细介绍了如何在Spring Boot应用中集成MongoDB,从MongoDB的安装配置,到Spring Boot项目中的pom.xml与application.properties配置,再到MongoDB的测试操作,最后提供了相关参考资料链接。

一、安装MongoDB

sudo apt-get install mongodb

二、配置MongoDB

sudo service mongodb stop
mongod --bind_ip_all

三、springboot + MongoDB配置

  1. pom.xml配置
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
  1. application.properties配置
spring.data.mongodb.uri=mongodb://10.6.3.148:27017/mydb

四、springboot + MongoDB测试

@Repository
public interface StudentRepository extends MongoRepository<Student, String> {
}
public class AAApplicationTests {
    @Autowired
    private StudentRepository studentRepository;

    private String id;

    @Before
    public void contextLoads() throws Exception {
        Student student = new Student();
        student.setName("kk_cock");
        student.setAge(10);
        studentRepository.save(student);
        System.out.println(student.getId());
        id = student.getId();
    }

    @Test
    public void testGet() throws Exception {
        Optional<Student> optional = studentRepository.findById(id);
        if (optional.isPresent()) {
            Student student = optional.get();
            System.out.println(student.getName() + "," + student.getAge());
        } else {
            System.out.println("not found!");
        }
    }
}

输出内容:

2019-09-18-09:16:08 [main] INFO  org.mongodb.driver.connection- Opened connection [connectionId{localValue:2, serverValue:15}] to 10.6.3.148:27017
5d81855883fa3544a0d97f82
kk_cock,10

五、参考连接

  1. Spring Boot中使用MongoDB数据库
  2. Ubuntu 16.04 安装MongoDB及卸载
### Spring Boot 整合 MongoDB 实现管道聚合操作 #### 配置 `application.yml` 文件中的 MongoDB 设置 为了使应用程序能够访问 MongoDB 数据库,在项目的 `application.yml` 中需指定主机地址、端口以及目标数据库名称。 ```yaml spring: data: mongodb: host: localhost port: 27017 database: test ``` 此部分配置允许 Spring Boot 自动发现并初始化与 MongoDB 的连接[^1]。 #### 使用 `MongoTemplate` 执行复杂的数据处理逻辑 对于较为复杂的查询需求,尤其是涉及多阶段转换的任务时,可以利用 `MongoTemplate` 来构建和执行聚合管道。下面是一个简单的例子来展示如何统计不同年龄段用户的数目: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private MongoTemplate mongoTemplate; public Map<Integer, Long> groupByAgeAndCountUsers() { Aggregation aggregation = newAggregation( match(Criteria.where("age").exists(true)), group("age").count().as("total") ); List<DBObject> results = mongoTemplate.aggregate(aggregation, "users", DBObject.class).getMappedResults(); return results.stream() .collect(Collectors.toMap( doc -> (Integer)doc.get("_id"), doc -> ((Number)doc.get("total")).longValue())); } } ``` 上述代码片段展示了通过定义一个名为 `groupByAgeAndCountUsers()` 的方法来进行分组计数的操作过程[^2]。这里采用了两个主要组件——匹配条件 (`match`) 和分组策略 (`group`) 构建了一个基本的聚合框架;最后调用了 `mongoTemplate.aggregate(...)` 函数完成实际计算工作。 #### 聚合管道的具体实现细节 当涉及到更加精细或定制化的数据分析场景下,则可能需要用到 MongoDB 提供的一系列内置函数作为管道的一部分。例如 `$project`, `$sort`, `$limit` 等等都可以被加入到现有的管道结构之中以满足特定业务的需求[^4]。 考虑这样一个案例:假设现在想要获取前五位最活跃用户及其发表的文章总数。那么可以在原有基础上增加排序(`$sort`)和限制结果集大小(`$limit`)这两个步骤形成新的聚合表达式如下所示: ```java import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; // ...其他导入语句... public List<UserActivityDTO> topFiveActiveUsersWithPostCounts(){ TypedAggregation<User> agg = newAggregation(User.class, project("username","posts"), // 投影字段 unwind("posts"), // 展开嵌套数组 sort(Sort.Direction.DESC,"posts.length"), // 按文章长度降序排列 limit(5), // 只取前五个记录 group("username") // 再次按用户名分组求总发帖量 .sum("1").as("postCount")); return mongoTemplate.aggregate(agg, UserActivityDTO.class).getMappedResults(); } ``` 这段代码不仅实现了对原始数据的有效筛选还进一步加工形成了易于理解的结果形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值