我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mongodb三分钟入门大全

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mongodb三分钟入门大全

一、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、关键字对比

MySQLMongoDB解释说明
databasedatabase数据库
tablecollection表/集合
rowdocument行/文档
columnfield字段/域
indexindex索引
join嵌入文档表关联/MongoDB不支持join,MongoDB通过嵌入式文档来替代多表连接
primary keyprimary 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();
    }
    
    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入门内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mongodb三分钟入门大全

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MongoDB学习(三) --- MongoDB Java入门

1、搭建测试环境步骤一:创建 maven 项目父项目的pom文件 4.0.0 com.tqylxuecheng xc_parent pom 1.0-SNAPSHOT xc_test_parent
MongoDB学习(三) --- MongoDB Java入门
2022-03-31

Webpack 10分钟入门

可以说现在但凡开发Single page application,webpack是一个不可或缺的工具。WebPack可以看做是一个模块加工器,如上图所示。它做的事情是,接受一些输入,经过加工产生一些输出。输入是我们web前端项目的模块文件,
2023-06-03

Linux强大命令 Awk 20分钟入门介绍

什么是AwkAwk是一种小巧的编程语言及命令行工具。(其名称得自于它的创始人Alfred Aho、Peter Weinberger 和 Brian Kernighan姓氏的首个字母)。它非常适合服务器上的日志处理,主要是因为Awk可以对文件
2022-06-03

10分钟快速入门Pandas库

pandas是基于NumPy的一种工具,该工具是为解决数据分析任务而创建的,这篇文章主要介绍了10分钟快速入门Pandas库,需要的朋友可以参考下
2023-02-21

一分钟入门Python Lambda表达式:从入门到精通

Python Lambda 表达式是一种简短、匿名的函数,可以用来代替常规函数。Lambda 表达式通常用于需要一次性传递函数的地方,例如在过滤器、映射和 reduce 函数中。
一分钟入门Python Lambda表达式:从入门到精通
2024-02-09

perl语言十分钟入门【零基础可入】

Perl是一种高级编程语言,适用于处理文本和执行系统管理任务。它具有简洁的语法和强大的字符串处理能力,被广泛用于编写脚本、Web开发和系统管理等方面。下面是一个简单的Perl程序,用于打印"Hello, World!":```perl#!/
2023-10-08

Shell脚本编程30分钟入门(小结)

什么是Shell脚本Shell脚本(英语:Shell script),又称Shell命令稿、程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作
2022-06-04

15分钟并行神器gnu parallel入门指南

GNU Parallel是一个shell工具,为了在一台或多台计算机上并行的执行计算任务。本文简要介绍GNU Parallel的使用。这个cpu是多核的。 一般两核是这样工作的的:四核是这样工作的:16核是这样工作的:好了不黑了。再黑int
2022-06-04

30分钟入门Java8之lambda表达式学习

前言Google在今年发布Android N开发者预览版,一并宣布开始支持Java 8。我们终于能在Android开发中使用到Java8的一些语言特性了。目前支持: 默认方法 lambda表达式 多次注解今天我们就简要学习lambda
2023-05-31

Python入门之三角函数全解【收藏】

Python中的三角函数位于math模块内。 引入模块: import math 输出pi: import math print(math.pi) 得:3.141592653589793 math模块内还有sin、cos、tan之类的函数
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录