1.Mongodb简介
  • MongoDB是一个高性能,开源,无模式的文档型数据库
  • Mongodb可以通过副本集、分片来扩展数据库性能
  • 传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点
  • Mongo主要解决的是海量数据的访问效率问题。因为Mongo主要是支持海量数据存储的,所以Mongo还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储。由于Mongo可以支持复杂的数据结构,而且带有强大的数据查询功能
2.应用案例
  • 京东,中国著名电商,使用MongoDB存储商品信息,支持比价和关注功能
  • 赶集网,中国著名分类信息网站,使用MongoDB记录pv浏览计数
  • 百度云,使用MongoDB管理百度云盘中500亿条关于文件源信息的记录
3.不适合场景
  • 不支持事务,需要高度事物性的系统:例如银行或会计系统
  • 需要SQL的系统
4.我所在的项目与电商类似,有商品,不同类别商品的字段不一样,使用Mongodb就非常方便,随时加减字段,当访问能力增加时可以通过增加副本集、分片来扩展数据库性能

######5.SpringBoot 实现MongoDB的增删改查

  • 添加spring-boot-starter-data-mongodb包引用
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
  • 在application.properties里面添加 mongodb的连接配置
# MongoDB 配置
spring.data.mongodb.host=192.168.68.133
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=admin
spring.data.mongodb.username=admin
spring.data.mongodb.password=123456
#每个主机的连接数
spring.data.mongodb.connections-per-host=50
#线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值
spring.data.mongodb.threads-allowed-to-block-for-connection-multiplier=50
spring.data.mongodb.connect-timeout=5000
spring.data.mongodb.socket-timeout=3000
spring.data.mongodb.max-wait-time=1500
#控制是否在一个连接时,系统会自动重试
spring.data.mongodb.auto-connect-retry=true
spring.data.mongodb.socket-keep-alive=true
  • 新建 mongodb测试类,注入 MongodbTemplate 就可以实现增删改查了,新建一个User实体,有 id、name、age 3个字段
public class MongodbTest {

    @Autowired private MongoTemplate mongoTemplate;
	
    @Test
    public void add(){
        User user = new User();
        user.setId(1);
        user.setName("zhuyu");
        user.setAge(26);
        mongoTemplate.insert(user , "User");
    }
    @Test
    public void edit(){
        Query query = new Query(Criteria.where("name").is("zhuyu"));
        Update update = new Update();
        update.set("name","zy");
        update.set("age",24);
        mongoTemplate.updateFirst(query , update , "User");
    }
    @Test
    public void del(){
        Query query = new Query(Criteria.where("name").is("zy"));
        mongoTemplate.remove(query , "User");
    }
    @Test
    public void getById(){
        Query query = new Query(Criteria.where("name").is("zy"));
        User user = mongoTemplate.findOne(query,User.class,"User");
        System.out.println(JSON.toJSONString(user));
    }
}

右键运行各个方法,可以用mongodb客户端看到操作后的数据,测试结果如下:
1.执行add
这里写图片描述

2.执行edit
这里写图片描述

3.执行getById
这里写图片描述

4.最后 del 掉

现在是对mongodb的一些简单使用,还没有涉及副本集等操作
本篇文章演示了SpringBoot集成Mongodb,之前也写过一篇集成的文章
Mongodb的安装,请参考 mongodb安装Mongodb安装与设置副本集 二 (添加权限认证)

MongoDB数据超多之后请使用索引,真实案例,有张表数据超过300万,分页查询超时,设置合理的索引后秒查
如,按时间倒序索引:db.Global_Exception_Info.createIndex({“createDate”:-1}),正序是 1,倒序是 -1

下篇 引用本地jar包与打包本地jar

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐