
本文共 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 ListfindAll() { return mongoTemplate.findAll(Policy.class); } // 其他操作方法...}
MongoDB Repository
如果需要更高级的操作,可以使用 MongoRepository
接口:
public interface MongoRepositoryTest extends MongoRepository{}
总结
MongoDB 的学习过程充满了挑战,但随着对其特点和操作的理解,逐渐掌握了它的核心能力。通过 Spring Boot 的整合,能够更方便地将 MongoDB 与其他技术栈结合,实现高效的数据管理。在实践中,需要不断尝试和优化,才能更好地适应项目需求。
发表评论
最新留言
关于作者
