第1章:MongoDB基础
1.1 NoSQL与MongoDB简介
1.1.1 NoSQL数据库发展历程
-
传统关系型数据库的局限性
-
Web 2.0时代的数据存储需求
-
NoSQL数据库的兴起
-
MySQL与MongoDB的比较
- 优点:
- 高性能
- 可扩展
- 灵活的文档模型
- 缺点:
- 无事务支持
- 无join支持
- 数据一致性问题
- 实时web应用
- 分布式数据存储
- 大数据分析
- 数据采集与分析
- 优点:
1.1.2 文档型数据库概念
- 文档的灵活性
- 无模式设计
- JSON/BSON数据格式
1.1.3 MongoDB的特点与优势
- 灵活的文档模型
javascript
// 动态模式示例
db.users.insertMany([
{
name: "张三",
age: 30,
contacts: {
email: "zhangsan@example.com",
phone: "13800138000"
}
},
{
name: "李四",
age: 25,
hobbies: ["篮球", "编程"]
}
])
- 高性能
- 索引支持
- 内存映射存储引擎
- 横向扩展能力
- 丰富的查询语言
javascript
// 复杂查询示例
db.products.find({
$and: [
{price: {$gte: 100, $lte: 500}},
{category: "电子产品"},
{stock: {$gt: 0}}
]
})
1.1.4 应用场景分析
- 实时分析系统
- 内容管理
- 物联网数据存储
- 移动应用后端
- 日志存储
1.2 安装与配置
1.2.1 多平台安装
bash
# Ubuntu安装
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
# MacOS安装
brew tap mongodb/brew
brew install mongodb-community
# Windows安装
# 下载官方安装包,配置环境变量
1.2.2 配置文件详解
yaml
# mongodb.conf 配置示例
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
net:
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
1.3 基本概念
1.3.1 数据模型
- 数据库(Database)
- 集合(Collection)
- 文档(Document)
- 字段(Field)
- ObjectId
javascript
// 数据模型示例
{
_id: ObjectId("5f8d3a1c9d3b2a1b1c9d3b2a"), // 唯一标识符
name: "产品名称",
price: 99.99,
tags: ["电子", "数码"],
specs: {
color: "black",
size: "large"
}
}
1.3.2 ObjectId详解
javascript
// ObjectId生成机制
let id = ObjectId()
id.getTimestamp() // 获取创建时间
id.str // 字符串表示
实践练习
- 安装MongoDB
- 配置基本连接
- 创建第一个数据库
- 插入不同结构的文档
- 体验动态模式的灵活性
学习总结
- 理解NoSQL与文档型数据库概念
- 掌握MongoDB安装与基本配置
- 了解数据模型的灵活性
- 认识MongoDB的应用场景
- 初步体验文档存储的优势