目录
- 一、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!