博客
关于我
Day227.MongoDB简介、入门、整合SpringBoot -尚医通
阅读量:326 次
发布时间:2019-03-04

本文共 3122 字,大约阅读时间需要 10 分钟。

MongoDB入门与Spring Boot集成

MongoDB简介

NoSQL(No Only SQL)数据库是一项全新的数据库革命性运动,旨在为处理非关系型数据提供灵活、高效的解决方案。与传统的关系型数据库(如MySQL、Oracle)不同,NoSQL数据库能够更好地适应高并发读写、海量数据存储以及高扩展性需求的应用场景。

为什么选择NoSQL?

  • 高并发读写能力

    NoSQL数据库设计时考虑了高并发场景,能够在短时间内处理大量的读写操作,非常适合像电商、社交网络等实时数据处理的应用。

  • 高效率存储与访问

    NoSQL数据库通常采用键值存储机制,能够以更高的效率存储和检索数据,特别适合处理大量的结构化数据。

  • 高可扩展性与高可用性

    NoSQL数据库支持分布式架构,能够通过添加更多节点提升系统性能,确保服务的稳定性和可靠性。

  • MongoDB特点

  • 面向文档存储

    MongoDB将数据存储为文档,数据结构由键值对组成,类似于JSON格式,操作简便且灵活。

  • 灵活的查询能力

    MongoDB支持复杂的查询操作,能够通过JSON表达式进行文档内嵌对象及数组的高效检索。

  • 分布式架构支持

    MongoDB能够将数据分片存储在多个节点上,支持高扩展性,同时提供强大的数据镜像功能。

  • 内置的Map/Reduce功能

    Map和Reduce是MongoDB处理大规模数据的重要工具,能够对数据进行批量处理和聚合操作。

  • 支持丰富的数据类型

    MongoDB支持多种数据类型,包括字符串、整数、布尔值、日期、数组等,能够满足不同应用的数据存储需求。

  • 高性能与易用性

    MongoDB安装简单,运行效率高,能够在高负载环境下保持稳定性能。

  • MongoDB安装

    使用Docker容器安装

  • 拉取MongoDB镜像:

    docker pull mongo:latest
  • 创建并启动容器:

    docker run -d --restart=always -p 27017:27017 --name mymongo -v /data/db:/data/db mongo
  • 进入容器并使用MongoDB客户端操作:

    docker exec -it mymongo /bin/bash

    在终端输入以下命令查看数据库列表:

    mongo > show dbs
  • MongoDB概念解析

    核心概念

    • 数据库:存储多个集合(类似于表)。
    • 集合:存储多个文档(类似于表中的行)。
    • 文档:存储键值对,数据结构灵活且易于修改。

    常用操作命令

  • 切换/创建数据库:

    use test
  • 创建集合:

    db.createCollection("users")
  • 插入数据:

    db.users.insert({ name: "张三", age: 30 })
  • 查询数据:

    db.users.find()
  • 更新数据:

    db.users.update({ "name": "张三" }, { $set: { age: 40 } })
  • 删除数据:

    db.users.remove({ _id: "1234567890abcd" })
  • 聚合操作:

    db.articles.aggregate([  { $group: { _id: "$by_user", num_tutorials: { $sum: 1 } } }])
  • Spring Boot与MongoDB集成

    集成简介

    Spring Boot提供了MongoTemplateMongoRepository两种与MongoDB交互的接口。MongoTemplate操作灵活,适合复杂查询;MongoRepository基于MongoDB的核心查询操作,操作简单。

    搭建开发环境

  • 初始化Spring Boot项目:

    使用Spring Initializr快速创建项目,设置包名为com.example,依赖项包括spring-boot-starter-data-mongodbspring-boot-starter-web

  • 修改pom.xml添加依赖:

    org.springframework.boot
    spring-boot-starter-data-mongodb
    org.springframework.boot
    spring-boot-starter-web
  • 配置MongoDB地址:

    application.properties中添加:

    spring.data.mongodb.uri=mongodb://localhost:27017/test
  • 基于MongoTemplate开发CRUD

  • 定义实体类:

    @Data@Document(collection = "users")public class User {  @Id  private String id;  private String name;  private Integer age;  private String email;  private Date createDate;}
  • 实现CRUD操作:

    • 插入

      User user = new User();user.setName("张三");user.setAge(30);mongoTemplate.insert(user);
    • 查询

      List
      userList = mongoTemplate.findAll(User.class);
    • 更新

      User user = mongoTemplate.findById("1234567890abcd", User.class);user.setAge(40);mongoTemplate.save(user);
    • 删除

      mongoTemplate.remove(new Query(Criteria.where("_id").is("1234567890abcd")), User.class);
  • 基于MongoRepository开发CRUD

  • 定义仓库接口:

    @Repositorypublic interface UserRepository extends MongoRepository
    {}
  • 实现CRUD操作:

    • 插入

      User user = new User();user.setName("张三");userRepository.save(user);
    • 查询

      List
      userList = userRepository.findAll();
    • 更新

      User user = userRepository.findById("1234567890abcd").get();user.setAge(40);userRepository.save(user);
    • 删除

      userRepository.deleteById("1234567890abcd");
  • 总结

    MongoDB作为一种高效的NoSQL数据库,适合处理大规模的非关系型数据存储和高并发操作。而Spring Boot与MongoDB的集成,使得开发者能够快速构建基于MongoDB的数据访问层,实现对数据的高效管理和操作。通过以上内容,可以快速上手MongoDB的使用,并在Spring Boot项目中实现与MongoDB的交互。

    转载地址:http://rsoq.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | CIB-SE-YOLOv8: 优化的YOLOv8, 用于施工现场的安全设备实时检测 !
    查看>>
    OpenCV与AI深度学习 | CoTracker3:用于卓越点跟踪的最新 AI 模型
    查看>>
    OpenCV与AI深度学习 | OpenCV中八种不同的目标追踪算法
    查看>>
    OpenCV与AI深度学习 | OpenCV图像拼接--Stitching detailed使用与参数介绍
    查看>>
    OpenCV与AI深度学习 | OpenCV如何读取仪表中的指针刻度
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(三):基于特征匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(二) :基于模板匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 什么是 COCO 数据集?
    查看>>