文章目录
-
- 一、前言
- [二、MongoDB 基础概念](#二、MongoDB 基础概念)
- [三、MongoDB 安装与配置](#三、MongoDB 安装与配置)
-
- [1. 安装 MongoDB](#1. 安装 MongoDB)
-
- [(1) 在 Windows 上安装](#(1) 在 Windows 上安装)
- [(2) 在 Linux(Ubuntu)上安装](#(2) 在 Linux(Ubuntu)上安装)
- [2. 配置 MongoDB](#2. 配置 MongoDB)
- [四、MongoDB 基本操作](#四、MongoDB 基本操作)
-
- [1. 连接 MongoDB](#1. 连接 MongoDB)
- [2. 创建数据库](#2. 创建数据库)
- [3. 创建集合](#3. 创建集合)
- [4. 插入文档](#4. 插入文档)
- [5. 查询文档](#5. 查询文档)
- [6. 更新文档](#6. 更新文档)
- [7. 删除文档](#7. 删除文档)
- [8. 创建索引](#8. 创建索引)
- [五、MongoDB 高级应用](#五、MongoDB 高级应用)
-
- [1. 聚合操作(Aggregation)](#1. 聚合操作(Aggregation))
- [2. 事务支持(Transactions)](#2. 事务支持(Transactions))
- [3. 备份与恢复](#3. 备份与恢复)
一、前言
MongoDB 是一种基于分布式存储的 NoSQL 数据库,采用文档模型存储数据,具有高性能、高可用性和高扩展性的特点。与传统的关系型数据库(如 MySQL、PostgreSQL)不同,MongoDB 以 BSON(类似 JSON)格式存储数据,使其更适合处理海量数据、实时分析以及高并发应用。
二、MongoDB 基础概念
- 数据库(Database):MongoDB 服务器可以包含多个数据库,每个数据库独立管理数据。
- 集合(Collection):类似于关系型数据库中的"表",但不需要预定义字段结构。
- 文档(Document):MongoDB 的基本数据单元,一个文档是以 BSON 格式存储的键值对(类似 JSON)。
- 字段(Field):文档中的键值对,相当于关系型数据库中的"列"。
- 索引(Index):用于加速查询操作,提高数据库性能。
示例:
json
{
"_id": ObjectId("60d5ecadf3a3f3e3a5a3c3d1"),
"name": "张三",
"age": 28,
"address": {
"city": "北京",
"zip": "100000"
}
}
三、MongoDB 安装与配置
1. 安装 MongoDB
(1) 在 Windows 上安装
-
从 MongoDB 官网 下载 MongoDB Community 版本。
-
运行安装程序,选择"完整安装"。
-
配置
mongod.cfg文件(默认端口 27017)。 -
启动 MongoDB 服务:
powershellnet start MongoDB
(2) 在 Linux(Ubuntu)上安装
-
更新软件包列表:
bashsudo apt update -
安装 MongoDB:
bashsudo apt install -y mongodb -
启动 MongoDB:
bashsudo systemctl start mongodb -
设置开机自启:
bashsudo systemctl enable mongodb
2. 配置 MongoDB
MongoDB 的配置文件位于 /etc/mongodb.conf(Linux)或 C:\Program Files\MongoDB\Server\6.0\bin\mongod.cfg(Windows)。
示例配置:
yaml
storage:
dbPath: /var/lib/mongodb
net:
bindIp: 0.0.0.0 # 允许远程访问
port: 27017
security:
authorization: enabled # 开启身份验证
重启 MongoDB 以应用更改:
bash
sudo systemctl restart mongodb
四、MongoDB 基本操作
1. 连接 MongoDB
在终端输入:
bash
mongo
如果已设置身份验证,则需要使用:
bash
mongo -u "admin" -p "password" --authenticationDatabase "admin"
2. 创建数据库
javascript
use mydatabase
查看当前数据库:
javascript
db
3. 创建集合
javascript
db.createCollection("users")
查看集合:
javascript
show collections
4. 插入文档
javascript
db.users.insertOne({ "name": "张三", "age": 28, "city": "北京" })
插入多个文档:
javascript
db.users.insertMany([
{ "name": "李四", "age": 30, "city": "上海" },
{ "name": "王五", "age": 25, "city": "广州" }
])
5. 查询文档
查询所有数据:
javascript
db.users.find()
条件查询:
javascript
db.users.find({ "age": { $gt: 25 } }) // 查询 age > 25 的用户
格式化输出:
javascript
db.users.find().pretty()
6. 更新文档
更新单个文档:
javascript
db.users.updateOne(
{ "name": "张三" },
{ $set: { "age": 29 } }
)
更新多个文档:
javascript
db.users.updateMany(
{ "city": "北京" },
{ $set: { "city": "天津" } }
)
7. 删除文档
删除单个文档:
javascript
db.users.deleteOne({ "name": "张三" })
删除多个文档:
javascript
db.users.deleteMany({ "city": "天津" })
8. 创建索引
javascript
db.users.createIndex({ "name": 1 })
查看索引:
javascript
db.users.getIndexes()
五、MongoDB 高级应用
1. 聚合操作(Aggregation)
javascript
db.users.aggregate([
{ $group: { _id: "$city", total: { $sum: 1 } } }
])
该查询按照 city 字段分组,并统计每个城市的用户数量。
2. 事务支持(Transactions)
MongoDB 4.0 以上版本支持事务:
javascript
session = db.getMongo().startSession()
session.startTransaction()
try {
session.getDatabase("mydatabase").users.insertOne({ "name": "赵六", "age": 35 })
session.commitTransaction()
} catch (error) {
session.abortTransaction()
}
session.endSession()
3. 备份与恢复
备份数据库:
bash
mongodump --out /backup/mongodb
恢复数据库:
bash
mongorestore /backup/mongodb