MongoDB
1. 安装 MongoDB
1.1 在 Windows 上安装
-
下载 MongoDB:
- 访问 MongoDB 官方网站 下载适合 Windows 的安装包。
-
安装 MongoDB:
- 运行下载的安装程序,按照提示完成安装。
-
设置环境变量:
- 将 MongoDB 的
bin
目录添加到系统的环境变量中,以便在命令行中使用mongo
和mongod
命令。
- 将 MongoDB 的
-
创建数据目录:
- 默认情况下,MongoDB 会在
C:\data\db
目录下存储数据。你可以手动创建这个目录,或者在启动 MongoDB 时指定其他目录。
- 默认情况下,MongoDB 会在
1.2 在 macOS 上安装
-
使用 Homebrew 安装:
brew tap mongodb/brew brew install mongodb-community
-
启动 MongoDB:
brew services start mongodb/brew/mongodb-community
1.3 在 Linux 上安装
-
使用包管理器安装:
- 对于 Ubuntu:
sudo apt update sudo apt install -y mongodb
-
启动 MongoDB:
sudo systemctl start mongodb
2. 基本操作
2.1 启动 MongoDB
在命令行中输入以下命令启动 MongoDB 服务:
mongod
2.2 连接到 MongoDB
在另一个终端中,使用以下命令连接到 MongoDB:
mongo
2.3 创建数据库
使用 use
命令创建或切换到一个数据库:
use mydatabase
2.4 创建集合
集合类似于关系数据库中的表。使用 db.createCollection()
创建集合:
db.createCollection("mycollection")
2.5 插入文档
使用 insertOne()
或 insertMany()
插入文档:
// 插入单个文档
db.mycollection.insertOne({ name: "Alice", age: 25 })
// 插入多个文档
db.mycollection.insertMany([
{ name: "Bob", age: 30 },
{ name: "Charlie", age: 35 }
])
2.6 查询文档
使用 find()
查询文档:
// 查询所有文档
db.mycollection.find()
// 查询特定条件的文档
db.mycollection.find({ age: { $gt: 30 } }) // 查询年龄大于 30 的文档
2.7 更新文档
使用 updateOne()
或 updateMany()
更新文档:
// 更新单个文档
db.mycollection.updateOne(
{ name: "Alice" },
{ $set: { age: 26 } }
)
// 更新多个文档
db.mycollection.updateMany(
{ age: { $gt: 30 } },
{ $set: { status: "senior" } }
)
2.8 删除文档
使用 deleteOne()
或 deleteMany()
删除文档:
// 删除单个文档
db.mycollection.deleteOne({ name: "Alice" })
// 删除多个文档
db.mycollection.deleteMany({ age: { $lt: 30 } })
3. 查询操作
3.1 查询条件
MongoDB 支持多种查询条件:
- 比较操作符:
$eq
:等于$ne
:不等于$gt
:大于$gte
:大于等于$lt
:小于$lte
:小于等于
db.mycollection.find({ age: { $gte: 30 } }) // 查询年龄大于等于 30 的文档
- 逻辑操作符:
$and
:与$or
:或$not
:非$nor
:不与
db.mycollection.find({ $or: [{ age: { $lt: 30 } }, { name: "Bob" }] }) // 查询年龄小于 30 或名字为 Bob 的文档
3.2 投影
使用投影来限制查询结果中返回的字段:
db.mycollection.find({}, { name: 1, age: 1 }) // 只返回 name 和 age 字段
3.3 排序
使用 sort()
方法对查询结果进行排序:
db.mycollection.find().sort({ age: 1 }) // 按年龄升序排序
3.4 限制结果数量
使用 limit()
方法限制返回的文档数量:
db.mycollection.find().limit(2) // 只返回前两个文档
4. 索引
索引可以提高查询性能。使用 createIndex()
创建索引:
db.mycollection.createIndex({ name: 1 }) // 为 name 字段创建升序索引
4.1 查看索引
使用 getIndexes()
查看集合的索引:
db.mycollection.getIndexes()
4.2 删除索引
使用 dropIndex()
删除索引:
db.mycollection.dropIndex("name_1") // 删除 name 字段的索引
5. 聚合
MongoDB 提供了强大的聚合框架,可以对数据进行复杂的处理和分析。
5.1 使用 aggregate()
使用 aggregate()
方法进行聚合操作:
db.mycollection.aggregate([
{ $match: { age: { $gte: 30 } } }, // 筛选年龄大于等于 30 的文档
{ $group: { _id: "$name", averageAge: { $avg: "$age" } } } // 按名字分组并计算平均年龄
])
5.2 常用聚合操作符
$match
:筛选文档$group
:分组$sum
:求和$avg
:平均值$count
:计数$sort
:排序
6. 数据备份与恢复
6.1 备份数据
使用 mongodump
命令备份数据:
mongodump --db mydatabase --out /path/to/backup
6.2 恢复数据
使用 mongorestore
命令恢复数据:
mongorestore --db mydatabase /path/to/backup/mydatabase
7. MongoDB 客户端工具
7.1 MongoDB Compass
MongoDB Compass 是 MongoDB 官方提供的图形化管理工具,可以方便地进行数据可视化、查询和管理。
7.2 Robo 3T
Robo 3T 是一个流行的 MongoDB GUI 客户端,提供了直观的界面和强大的功能,适合开发和管理 MongoDB 数据库。