博客
关于我
MongoDB基础学习总结及SpringBoot项目中的整合
阅读量:791 次
发布时间:2023-02-09

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

MongoDB 简单入门与 Spring Boot 整合实践

前言

MongoDB 如今是最流行的 NoSQL 数据库之一,被广泛应用于各行各业中。它以其灵活性、高性能和高可扩展性著称,深受开发者喜爱。作为一名技术爱好者,我在学习和实践过程中对 MongoDB 的基础知识以及它在 Spring Boot 项目中的应用流程进行了总结。下面将从 MongoDB 的简介、特点、安装操作、基本操作以及与 Spring Boot 的整合流程等方面分享我的学习心得。


MongoDB 简介

MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写。它设计用于为 WEB 应用提供高性能的数据存储解决方案,适用于各种规模的企业和各类应用程序。与传统的关系型数据库不同,MongoDB 采用文档存储模式,其数据结构灵活且易于扩展。

MongoDB 的特点

  • 易扩展性:MongoDB 使用分片技术,能够自动分片并平衡数据分布,去除了传统关系型数据库的关系性约束。

  • 高性能:它支持实时插入操作,同时具备高效的查询能力,适合实时数据处理。

  • 高伸缩性:MongoDB 适合由数十或数百台服务器组成的分布式系统,内置 MapReduce 引擎支持大规模数据处理。

  • 存储动态性:文档存储模式允许属性字段动态添加和删除,避免了传统数据库对结构的严格约束。

  • 速度与持久性:MongoDB 提供快速的写入速度,但需权衡网络不安全性。

  • MongoDB 与传统 SQL 对比

    SQL 术语 MongoDB 术语 说明
    Database Database 数据库名称,MongoDB 支持多个数据库。
    Table Collection 数据库中的集合,相当于关系型数据库的表。
    Row Document 存储在集合中的文档,类似于关系型数据库的行。
    Column Field 文档中的字段,类似于关系型数据库的列。
    Index Index 索引优化查询性能,MongoDB 支持复合索引。
    Table joins No support MongoDB 不支持表连接查询。
    Primary key Primary key MongoDB 自动将 _id 字段设为主键。

    MongoDB 安装

    在 CentOS 7 系统上安装 MongoDB:

  • 安装依赖包

    sudo yum install libcurl openssl
  • 下载 MongoDB

    wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.5.tgz
  • 解压安装包

    tar -zxvf mongodb-linux-x86_64-rhel70-6.0.5.tgz
  • 创建目录

    sudo mkdir -p /var/lib/mongosudo mkdir -p /var/log/mongodbsudo chown 777 /var/lib/mongosudo chown 777 /var/log/mongodb
  • 配置 MongoDB

    创建配置文件 mongodb.conf

    touch mongodb.conf

    配置内容如下:

    port=27017bind_ip=0.0.0.0dbpath=/var/lib/mongologpath=/var/log/mongodb/mongod.logfork=trueauth=true
  • 启动 MongoDB

    进入 MongoDB 安装目录并启动服务:

    cd /usr/local/mongodb/binmongod --config mongodb.conf

    启动成功后,可以通过日志文件确认:

    tail -10f /var/log/mongodb/mongod.log

  • MongoDB 基本操作

    MongoDB 提供交互式 Shell,用户可以通过命令直接操作数据库。以下是常用操作示例:

    数据库管理

    • 列出所有数据库:
      show databases
    • 切换到指定数据库:
      use test
    • 创建数据库:
      db.createDatabase("test")

    集合操作

    • 创建集合:
      db.createCollection("userinfo")
    • 查看集合:
      show collections
    • 删除集合:
      db.userinfo.drop()

    文档操作

    • 插入数据:
      db.userinfo.insert({name: "李四", age: 25, gender: "男", address: "湖北"})
    • 查询数据:
      db.userinfo.find()
    • 分页查询:
      db.userinfo.find().sort({age: 1}).skip(20).limit(10)

    查询运算符

    • 条件查询:
      db.userinfo.find({age: $gt: 20})
    • 范围查询:
      db.userinfo.find({age: $in: [16, 20]})

    更新操作

    • 更新单条记录:
      db.userinfo.update({name: "王五"}, $set: {address: "汉阳"})
    • 更新多条记录:
      db.userinfo.updateMany({age: 25}, $set: {age: 30})

    删除操作

    • 删除单条记录:
      db.userinfo.deleteOne({age: 25})
    • 删除多条记录:
      db.userinfo.deleteMany({age: 16})

    Spring Boot 与 MongoDB 整合

    依赖添加

    在项目 pom.xml 中添加 MongoDB 支持:

    org.springframework.boot
    spring-boot-starter-data-mongodb

    MongoDB 连接配置

    修改 application.yml 文件:

    spring:    data:        mongodb:            uri: mongodb://localhost:27017/news

    实体类与 Repository

    创建对应的实体类:

    @Entity@Data@Document(collection = "policy")public class Policy {    @Id    private Integer id;    private String bigTitle;    private String childTitle;    private String content;    private Integer hits;    private String creatTime;}

    Service 层操作

    通过 MongoTemplate 实现数据操作:

    public class PolicyServiceImpl implements PolicyService {    @Autowired    private MongoTemplate mongoTemplate;    @Override    public List
    findAll() { return mongoTemplate.findAll(Policy.class); } // 其他操作方法...}

    MongoDB Repository

    如果需要更高级的操作,可以使用 MongoRepository 接口:

    public interface MongoRepositoryTest extends MongoRepository
    {}

    总结

    MongoDB 的学习过程充满了挑战,但随着对其特点和操作的理解,逐渐掌握了它的核心能力。通过 Spring Boot 的整合,能够更方便地将 MongoDB 与其他技术栈结合,实现高效的数据管理。在实践中,需要不断尝试和优化,才能更好地适应项目需求。

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

    你可能感兴趣的文章
    module 'requests' has no attribute 'get' python
    查看>>
    Module Federation在vue3中使用vue2的组件
    查看>>
    Module Zero之语言管理
    查看>>
    module ‘@babel/runtime/helpers/interopRequireDefault.js‘ is not defined报错解决方法
    查看>>
    ModuleNotFoundError: No module named ‘setuptools_rust‘
    查看>>
    ModuleNotFoundError: No module named ‘webdriver_manager‘ 错误即使在安装 webdrivermanager 之后
    查看>>
    ModuleNotFoundError: No module named ‘_bz2‘
    查看>>
    ModuleNotFoundError: No module named ‘_lzma‘
    查看>>
    ModuleNotFoundError:没有名为“versioneer“的模块
    查看>>
    ModuleNotFoundError: no module named ‘pip‘解决方法
    查看>>
    ModuleNotFoundError:Spyder中没有名为Pip&39;的模块
    查看>>
    Module加载
    查看>>
    MogoTemplate基本入门(Mongodb数据库基本增删改查)
    查看>>
    Mojarra JSF ViewState 反序列化漏洞复现
    查看>>
    My new English
    查看>>
    Mojo:比 Python 快 35000 倍的编程语言诞生!
    查看>>
    MolecularNotes 开源项目教程
    查看>>
    MolGAN网络架构:用于小分子图的隐式生成模型
    查看>>
    Moment.js
    查看>>
    moment.js常见格式化处理各种时间方法
    查看>>