2023年了,复习了一下spring boot配置使用mongodb

前言

  • MongoDB是一个基于分布式文件存储的开源数据库系统,使用C++语言编写。它是一个介于关系数据库和非关系数据库之间的产品,具有类似关系数据库的功能,但又有一些非关系数据库的特点。MongoDB的数据模型比较松散,采用类似json的bson格式,可以灵活地存储各种类型的数据
MongoDB的优点
  • 高性能MongoDB使用C++编写,具有高效的I/O处理能力和磁盘读写速度,能够在高并发的情况下处理大量数据请求

  • 可扩展性MongoDB采用分布式文件存储,可以方便地进行水平扩展,增加服务器数量即可提高整体性能和容量

  • 易用性MongoDB提供了丰富的编程语言驱动程序,包括Java、Python、PHP、C#等,使得开发人员可以方便地使用MongoDB进行数据存储和查询

  • 灵活性MongoDB支持的数据结构非常松散,可以灵活地存储各种类型的数据,包括文档、图片、视频等,满足不同应用的需求

MongoDB的缺点
  • 事务支持不足MongoDB在早期版本中并没有完全支持事务,这使得在处理一些需要事务保证的业务时存在局限性。虽然最新版本已经支持事务,但与传统的关系型数据库相比,事务支持仍然不足

  • 数据安全性MongoDB的数据安全性相对较低,尤其是在多节点环境中,数据的一致性难以得到保证。此外,MongoDB没有内置的数据备份和恢复机制,需要手动进行备份和恢复操作

  • 适用场景有限MongoDB适用于存储大量数据和高并发的场景,但在一些需要精确查询和复杂逻辑处理的场景中,MongoDB可能无法满足需求。在这种情况下,传统的关系型数据库可能更为适用

MongoDB应用场景MongoDB被广泛应用于各种场景,比较典型的应用包括
  • Web应用MongoDB适合用于Web应用的数据存储,尤其是对于需要处理大量用户请求和高并发的场景,例如社交网络、电商网站等

  • 日志和监控数据MongoDB可以高效地存储大量的日志和监控数据,支持水平扩展和高并发写入,方便开发人员进行分析和监控

  • 缓存MongoDB可以作为缓存层使用,将常用数据存储在MongoDB中,以提高查询效率。同时,MongoDB支持数据的过期时间和LRU缓存策略,可以有效地管理缓存生命周期

  • 文档存储MongoDB适合存储结构化和半结构化的文档数据,例如邮件、文档、图片等,可以方便地进行读取和搜索操作

Spring boot配置使用mongodb

新建一个spring boot工程,工程目录如下

image

配置连接池,mongodb配置前缀需要加上mongodb
spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017/test

entity字段
@Data
@Document(collection = "user") //指定要对应的文档名(表名)
@Accessors(chain = true)
public class User {
    @Id
    private String id;//用户ID

    private String name; //用户名称
}

使用mongodb实现简单的用户增删改查功能

备注:这里为了处理数据方便,就直接返回mongodb返回的数据格式了,并且处理成字符串格式,
实际的开发业务场景需要根据项目需要去处理

使用insert方法新增
@Override
public String insertUser(User user) {
    User userInfo = mongoTemplate.insert(user);
    return userInfo.toString();
}

使用findAll方法查询user集合
@Override
public String queryUser() {
    List<User> userList = mongoTemplate.findAll(User.class,"user");
    return userList.toString();
}

使用updateFirst方法更新查询到的第一个用户的信息
@Override
public String updateUser(User user) {
    Update update = new Update();
    update.set("name",user.getName());
    mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(user.getId())),update,User.class);
    User userinfo = mongoTemplate.findById(user.getId().toString(),User.class);
    return userinfo.toString();
}

使用remove方法删除用户信息
@Override
public String deleteUser(User user) {
    mongoTemplate.remove(Query.query(Criteria.where("id").is(user.getId())),User.class);
    return "删除用户成功";
}

结尾

以上spring boot配置使用mongodb的的例子,复习了一下,需要入门的同学可以参照这个例子,源码在这

源码链接

文章个人博客地址:

spring boot配置使用mongodb

创作不易,转载请注明出处和作者。

欢迎关注公众号:程序员布欧,不定期更新技术入门文章

image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot使用MongoDB切换数据库,可以通过配置多个MongoDB连接信息和使用`MongoTemplate`的构造函数来实现。下面是具体的步骤: 1. 配置多个MongoDB连接信息 在`application.properties`文件中,配置多个MongoDB连接信息,例如: ``` # MongoDB1 spring.data.mongodb.uri=mongodb://localhost:27017/db1 spring.data.mongodb.database=db1 spring.data.mongodb.authentication-database=admin spring.data.mongodb.username=user1 spring.data.mongodb.password=password1 # MongoDB2 spring.data.mongodb2.uri=mongodb://localhost:27017/db2 spring.data.mongodb2.database=db2 spring.data.mongodb2.authentication-database=admin spring.data.mongodb2.username=user2 spring.data.mongodb2.password=password2 ``` 2. 创建多个MongoTemplate 创建多个MongoTemplate,并在构造函数中指定要使用的数据库,例如: ``` @Configuration public class MongoDbConfig { @Autowired private MongoProperties mongoProperties; @Bean(name = "mongoDb1Template") public MongoTemplate mongoDb1Template() { MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(new MongoClientURI(mongoProperties.getUri() + "/db1")); return new MongoTemplate(mongoDbFactory); } @Bean(name = "mongoDb2Template") public MongoTemplate mongoDb2Template() { MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(new MongoClientURI(mongoProperties.getUri() + "/db2")); return new MongoTemplate(mongoDbFactory); } } ``` 3. 在DAO层使用不同的MongoTemplate 在DAO层使用不同的MongoTemplate来操作不同的数据库,例如: ``` @Repository public class UserRepository { @Autowired @Qualifier("mongoDb1Template") private MongoTemplate mongoDb1Template; @Autowired @Qualifier("mongoDb2Template") private MongoTemplate mongoDb2Template; public void saveUser1(User user) { mongoDb1Template.save(user); } public void saveUser2(User user) { mongoDb2Template.save(user); } } ``` 这样就可以在DAO层使用不同的MongoTemplate来操作不同的数据库了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值