MongoDB 快速入门指南:从基础操作到实战技巧
2025-07-09 07:05:09作者:晏闻田Solitary
前言
MongoDB 作为当前最流行的 NoSQL 数据库之一,以其灵活的数据模型和强大的查询能力赢得了众多开发者的青睐。本文将基于专业视角,系统性地介绍 MongoDB 的核心操作,帮助开发者快速掌握这个强大的文档型数据库。
数据库基础操作
数据库管理
MongoDB 采用简单的命令来管理数据库:
// 查看所有数据库列表
show dbs
// 切换或创建数据库(当第一次插入数据时才会真正创建)
use my_database
// 查看当前使用的数据库
db
// 创建集合(相当于关系型数据库的表)
db.createCollection("users")
// 查看当前数据库中的所有集合
show collections
// 删除当前数据库(谨慎操作!)
db.dropDatabase()
专业提示:MongoDB 的数据库和集合都是懒创建的,只有在插入第一条数据时才会真正创建。
文档操作详解
插入文档
MongoDB 使用灵活的 JSON-like 文档格式:
// 插入单条文档
db.users.insertOne({
name: "张三",
age: 28,
isMarried: false,
address: {
city: "北京",
district: "海淀区"
},
hobbies: ["编程", "阅读", "旅行"]
})
// 批量插入文档
db.users.insertMany([
{
name: "李四",
age: 32
},
{
name: "王五",
age: 25
}
])
数据结构优势:MongoDB 的文档可以包含嵌套对象和数组,这种灵活性是传统关系型数据库难以比拟的。
查询文档
MongoDB 提供了丰富的查询功能:
// 查询所有文档
db.users.find()
// 条件查询
db.users.find({ age: 28 })
// 查询单个文档
db.users.findOne({ name: "张三" })
// 复合条件查询
db.users.find({
age: { $gt: 25 }, // 年龄大于25
"address.city": "北京" // 嵌套字段查询
})
// 投影查询(只返回指定字段)
db.users.find({}, { name: 1, age: 1 })
查询优化建议:
- 合理使用索引提高查询性能
- 使用投影减少网络传输量
- 对于大结果集使用分页
更新文档
MongoDB 提供精确的更新操作:
// 替换整个文档(谨慎使用)
db.users.updateOne({ name: "张三" }, {
name: "张三",
age: 29,
isMarried: true
})
// 部分更新(推荐方式)
db.users.updateOne(
{ name: "张三" },
{
$set: { age: 29, isMarried: true }, // 设置字段
$inc: { loginCount: 1 }, // 递增字段
$push: { hobbies: "摄影" } // 数组操作
}
)
// 批量更新
db.users.updateMany(
{ "address.city": "北京" },
{ $set: { region: "华北" } }
)
更新操作符:
$set
: 设置字段值$unset
: 删除字段$inc
: 数值增减$push
/$pull
: 数组操作
删除文档
// 删除单个文档
db.users.deleteOne({ name: "张三" })
// 批量删除
db.users.deleteMany({ age: { $lt: 18 } })
删除注意事项:
- 生产环境建议使用软删除模式
- 重要数据删除前建议先备份
- 大量删除可能影响性能,建议在低峰期进行
高级查询技巧
排序与分页
// 排序查询(1升序,-1降序)
db.users.find().sort({ age: 1, name: -1 })
// 分页查询
const pageSize = 10;
const pageNum = 2;
db.users.find()
.skip((pageNum - 1) * pageSize)
.limit(pageSize)
聚合查询
// 简单聚合:按城市分组统计用户数
db.users.aggregate([
{ $group: { _id: "$address.city", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
])
// 复杂聚合:多阶段处理
db.users.aggregate([
{ $match: { age: { $gt: 25 } } }, // 筛选
{ $project: { name: 1, city: "$address.city" } }, // 投影
{ $group: { _id: "$city", users: { $push: "$name" } } } // 分组
])
性能优化建议
-
索引优化:为常用查询字段创建索引
db.users.createIndex({ name: 1 }) db.users.createIndex({ "address.city": 1, age: -1 })
-
查询分析:使用 explain() 分析查询性能
db.users.find({ age: { $gt: 25 } }).explain("executionStats")
-
批量操作:优先使用批量插入/更新代替循环单条操作
总结
本文系统介绍了 MongoDB 的核心操作,从基础的 CRUD 到高级查询技巧。MongoDB 的强大之处在于其灵活的数据模型和丰富的查询能力,特别适合处理半结构化数据和快速迭代的开发场景。掌握这些基础操作后,开发者可以进一步学习 MongoDB 的事务处理、复制集、分片集群等高级特性,以应对更复杂的业务需求。