mongodb三分钟入门大全

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

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐