本文共 2441 字,大约阅读时间需要 8 分钟。
MongoDB学习笔记
1. MongoDB概念
1.1 业务应用场景
MongoDB适用于提供高性能、高可用性和支持扩展性的场景,常见应用包括:
- 社交网络:存储用户信息、朋友圈、位置数据等。
- 游戏:存储用户数据、装备、积分等。
- 物流:存储订单信息、物流状态等。
- 物联网:存储设备信息、日志数据。
MongoDB的优势在于:
- 数据量大时表现优异。
- 写入操作频繁,可应对高并发读写。
- 尽管事务性要求不高,仍能满足大部分应用需求。
1.2 MongoDB简介
MongoDB是一个开源、高性能、无模式的文档型数据库,支持灵活的数据结构(BSON格式)和高扩展性的架构。
- 文档型结构:存储为类似JSON的文档,支持嵌入式数据、数组等。
- 它像关系型数据库一样直观,但无需固定模式,灵活性高。
1.3 数据模型
MongoDB的最小存储单位是文档(document),类似于JSON对象:
- 字段名称为字符串,值可以是各种数据类型(包括嵌套文档和数组)。
- MongoDB支持多种数据类型,如整数、字符串、日期、Binary Data、 Regex等。
1.4 MongoDB特点
- 高性能:支持复杂查询和高并发操作。
- 高可用性:支持副本集(replica set)实现数据冗余和自动故障转移。
- 高可扩展性:支持分片(sharding),可水平扩展。
- 灵活的查询:支持文本搜索、地理位置查询等。
- 无模式:无需固定数据模式,便于快速迭代。
2. 单机部署配置
2.1 Windows安装
下载安装包:
- 从MongoDB官网下载对应版本的Windows安装包。
- 选择合适的版本(如31位或64位),根据上述提示下载。
解压与配置:
- 将压缩包解压到指定目录(如
data/db)。 - 启动MongoDB,命令行启动或通过配置文件。
- 配置文件中注意避免转义字符问题,避免使用Tab分隔字段。
使用Shell命令:
- 登录MongoDB:
mongo --host localhost --port 27017。 - 查看数据库:
show databases。 - 退出:
exit。
使用Compass:
- 下载并安装MongoDB Compass客户端,连接本地或远程站点。
2.2 Linux安装
下载安装包:
解压并配置:
- 解压并将目录移动到指定位置(如
/usr/local/mongodb)。 - 创建数据和日志目录,配置配置文件。
- 启动MongoDB完成配置。
使用命令和Compass:
- 使用命令:
mongo --port 27017。 - 查看数据库和索引:
show collections、db.getIndexes()。 - 通过Compass图形化界面管理和查询数据。
停止服务:
- 快速关闭:
kill -2 PID。 - 标准关闭:
db.shutdownServer()。
3. 基本操作命令
3.1 数据库操作
- 创建数据库:
use articledb。 - 删除数据库:
db.dropDatabase()。
3.2 集合操作
- 创建集合:
db.createCollection("mycollection")。 - 删除集合:
db.collection.drop()。
3.3 文档操作
- 插入文档:
db.collection.insert()。 - 批量插入:
db.collection.insertMany()。 - 查询文档:
db.collection.find()。 - 分页查询:
db.collection.find().skip(N).limit(N)。 - 排序查询:
db.collection.find().sort({字段: 1})。 - 删除文档:
db.collection.remove({条件})。 - 更新文档:
db.collection.update({条件}, 更新操作)。
3.4 查询优化
- 索引支持:创建和管理索引,使用解释计划(Explain Plan)查看查询性能。
- 复杂查询:使用正则表达式、集合操作符($and、$or等)进行高级查询。
4. 索引管理
4.1 索引概述
- 索引显著提升查询效率,通过B-Tree结构实现高效查找。
- 默认创建
_id 索引,禁止删除。
4.2 索引类型
- 单字段索引:对单个字段进行升序或降序排序。
- 复合索引:多字段组合索引,提升复杂查询效率。
- 地理空间索引:支持地理位置查询。
- 文本索引:支持文本搜索。
- 哈希索引:用于分片操作。
4.3 索引管理
- 创建索引:
db.collection.createIndex({字段: 1})。 - 删除索引:
db.collection.dropIndex("索引名")。 - 查看索引:
db.collection.getIndexes()。
4.4 查询解释
- 使用
explain() 命令分析查询性能,查看是否基于索引查询。 - 提高查询效率的关键:合理设计索引和查询约束条件。
5. 文章评论开发
5.1 项目搭建
- 依赖管理:在项目POM中添加Spring Boot和Spring Data MongoDB依赖。
- 配置数据库:在
application.yml中配置MongoDB地址和数据库名。
5.2 实体类设计
- 实体类注解:使用
@Document、@Indexed、@CompoundIndex等注解定义索引。 - 字段映射:确保字段名与数据库字段一致,避免冲突。
5.3 业务实现
- 保存评论:使用
@ür股份持久化框架或MongoTemplate直接操作。 - 查询评论:通过Pageable进行分页查询。
- 点赞功能:使用MongoTemplate实现局部更新,提升性能。
6. 总结
MongoDB适合处理高性能、高扩展性和大数据存储的应用场景,学习过程中需熟练掌握数据模式、索引管理和CRUD操作。通过Spring Data MongoDB快速搭建业务模块,优化点赞功能等细节能提高开发效率,为后续复杂应用奠定基础。
转载地址:http://mjhxz.baihongyu.com/