目录
- 一、mongodb是什么
- 1、维基百科
- 2、简而言之
- 二、mongodb 的应用场景
- 1、mongodb事务
- 2、多引擎支持各种强大的索引需求
- 3、具体的应用场景
- 4、以下是几个实际的应用案例:
- 5、选择mongodb的场景总结:
- 三、mongodb对比mysql
- 1、关键字对比
- 四、springboot整合mongodb实现增删改查
- 1、引入pom
- 2、启动类application
- 3、实体类
- 4、userrepository
- 5、业务层service
- 6、测试类
- 7、插入
- 8、更新
- 9、查询
一、mongodb是什么
1、维基百科
mongodb是一个基于分布式文件存储的数据库。由c++语言编写。旨在为web应用提供可扩展的高性能数据存储解决方案。
mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
2、简而言之
mongodb是文档型的nosql数据库,数据以文档(对应关系型数据库的记录)的形式在mongodb中保存,文档实际上就是一个个json字符串,使用json的好处是非常直观,通过一系列的key-value键值对来表示数据,符合我们的阅读习惯。
在java、python中对json都有很好的支持,数据从mongodb中读取出来后,可无需转换直接使用;支持丰富的数据结构,value可以是普通的整型、字符串、数组、嵌套的子文档,使用嵌套的好处是在mongodb中仅需一次简单的查询就能够获取到你所需的数据。
二、mongodb 的应用场景
1、mongodb事务
mongodb目前只支持单文档事务,mongodb暂时不适合需要复杂事务的场景。
灵活的文档模型json格式存储最接近真实对象模型,对开发者友好,方便快速开发迭代,可用复制集满足数据高可靠、高可用的需求,运维较为简单、故障自动切换可扩展分片集群海量数据存储。
2、多引擎支持各种强大的索引需求
- 支持地理位置索引
- 可用于构建各种o2o应用
- 文本索引解决搜索的需求
- ttl索引解决历史数据过期的需求
- gridfs解决文件存储的需求
- aggregation & mapreduce解决数据分析场景需求,可以自己写查询语句或脚本,将请求分发到 mongodb 上完成。
3、具体的应用场景
传统的关系型数据库在解决三高问题上的力不从心。
何为三高?
- high performance – 对数据库高并发读写的需求。
- huge storage – 对海量数据的高效率存储和访问的需求。
- high scalability && high availability- 对数据库的高可扩展性和高可用性的需求。
- mongodb可以完美解决三高问题。
4、以下是几个实际的应用案例:
(1)游戏场景
使用mongodb存储游戏用户信息、装备、积分等,直接以内嵌文档的形式存储,方便查询、更新。
(2)物流场景
使用mongodb存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以mongodb内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。
(3)社交场景
使用mongodb存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。
(4)物联网场景
使用mongodb存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。
(5)视频直播
使用mongodb存储用户信息、点赞互动信息。
5、选择mongodb的场景总结:
- 数据量大
- 读写操作频繁
- 数据价值较低,对事务要求不高
三、mongodb对比mysql
1、关键字对比
mysql | mongodb | 解释说明 |
---|---|---|
database | database | 数据库 |
table | collection | 表/集合 |
row | document | 行/文档 |
column | field | 字段/域 |
index | index | 索引 |
join | 嵌入文档 | 表关联/mongodb不支持join,mongodb通过嵌入式文档来替代多表连接 |
primary key | primary key | 主键/mongodb自动将_id字段设置为主键 |
四、springboot整合mongodb实现增删改查
1、引入pom
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>org.example</groupid> <artifactid>mongodbproject</artifactid> <version>1.0-snapshot</version> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.2.4.release</version> <relativepath/> </parent> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-mongodb</artifactid> </dependency> </dependencies> </project>
2、启动类application
package com.guor; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.boot.builder.springapplicationbuilder; import org.springframework.boot.web.servlet.support.springbootservletinitializer; @springbootapplication public class application extends springbootservletinitializer { @override protected springapplicationbuilder configure(springapplicationbuilder builder) { return builder.sources(application.class); } public static void main(string[] args) { springapplication.run(application.class, args); } }
3、实体类
package com.guor; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.boot.builder.springapplicationbuilder; import org.springframework.boot.web.servlet.support.springbootservletinitializer; @springbootapplication public class application extends springbootservletinitializer { @override protected springapplicationbuilder configure(springapplicationbuilder builder) { return builder.sources(application.class); } public static void main(string[] args) { springapplication.run(application.class, args); } }package com.guor.bean; import org.springframework.data.annotation.id; import java.io.serializable; public class user implements serializable { @id private string id;//主键 //该属性对应mongodb的字段的名字,如果一致,则无需该注解 private string name; private integer age; private string phone; private string parentid;//上级id public string getid() { return id; } public void setid(string id) { this.id = id; } public string getname() { return name; } public void setname(string name) { this.name = name; } public integer getage() { return age; } public void setage(integer age) { this.age = age; } public string getphone() { return phone; } public void setphone(string phone) { this.phone = phone; } public string getparentid() { return parentid; } public void setparentid(string parentid) { this.parentid = parentid; } @override public string tostring() { return "user{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", age=" + age + ", phone='" + phone + '\'' + ", parentid='" + parentid + '\'' + '}'; } }
4、userrepository
package com.guor.dao; import com.guor.bean.user; import org.springframework.data.domain.page; import org.springframework.data.domain.pageable; import org.springframework.data.mongodb.repository.mongorepository; public interface userrepository extends mongorepository<user,string> { page<user> getpagebyid(string parentid, pageable pageable); }
5、业务层service
package com.guor.service; import com.guor.bean.user; import com.guor.dao.userrepository; import org.springframework.beans.factory.annotation.autowired; import org.springframework.data.domain.page; import org.springframework.data.domain.pagerequest; import org.springframework.stereotype.service; import java.util.list; @service public class userservice { @autowired private userrepository userrepository; public void insertuser(user user){ userrepository.save(user); } public void updateuser(user user){ userrepository.save(user); } public void deleteuserbyid(string id){ userrepository.deletebyid(id); } public list<user> getalluser(){ return userrepository.findall(); } /** * 根据id查询评论 */ public user getuserbyid(string id){ return userrepository.findbyid(id).get(); } /** * 分页 */ public page<user> getpagebyid(string parentid, int page , int size){ return userrepository.getpagebyid(parentid, pagerequest.of(page-1,size)); } }
6、测试类
package com.guor; import com.guor.bean.user; import com.guor.service.userservice; import org.junit.test; import org.junit.runner.runwith; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.context.springboottest; import org.springframework.data.domain.page; import org.springframework.test.context.junit4.springrunner; import java.util.list; @runwith(springrunner.class) @springboottest(classes = application.class) public class mongodbtest { @autowired private userservice userservice; @test public void saveuser(){ user user=new user(); user.setname("比比东"); user.setage(22); user.setphone("1314"); userservice.insertuser(user); } @test public void getuser(){ list<user> list = userservice.getalluser(); for(user user : list){ system.out.println(user); } } @test public void updateuser(){ user user=new user(); user.setid("61e3d9ac57b3da05fd0fffed"); user.setname("云韵"); user.setage(29); user.setphone("18525351592"); user.setparentid("1"); userservice.updateuser(user); } @test public void getuserpage(){ page<user> pageresponse = userservice.getpagebyid("1",1, 2); system.out.println("----总记录数:"+pageresponse.gettotalelements()); system.out.println("----当前页数据:"+pageresponse.getcontent()); } @test public void deleteuser(){ string id = "61e3daf31faa1f5b0e6849f8"; userservice.deleteuserbyid(id); } }
7、插入
8、更新
9、查询
到此这篇关于mongodb三分钟入门大全的文章就介绍到这了,更多相关mongodb入门内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!