返回目录

MongoDB教程 - 灵活高效的文档型数据库

MongoDB是一款开源的文档型NoSQL数据库,使用BSON格式存储数据,支持灵活的文档结构。它兼具关系型数据库的查询能力和NoSQL的扩展性,适合处理结构不固定或快速变化的数据。本教程将助你全面掌握MongoDB。

一、MongoDB简介

MongoDB由10gen公司(现MongoDB Inc)于2009年发布。它将数据存储为JSON风格的文档,无需预定义表结构,字段可以动态添加。MongoDB支持丰富的查询语言、索引和聚合管道,功能强大且易于扩展。

特性描述
文档存储JSON/BSON格式,结构灵活
无模式同一集合中文档结构可不同
水平扩展原生支持分片,易于分布式部署
丰富查询支持条件查询、聚合、全文索引

二、你将学到什么

  • 基础概念:数据库、集合、文档、字段、_id
  • CRUD操作:insert、find、update、delete命令
  • 查询进阶:条件操作符、正则、数组查询、分页排序
  • 索引:单字段索引、复合索引、文本索引、地理索引
  • 聚合管道:$match、$group、$project、$sort、$lookup
  • 架构设计:嵌入 vs 引用、分片、副本集

三、代码示例

MongoDB文档操作与聚合查询示例:

// 插入文档
db.users.insertOne({
  name: "小明",
  age: 25,
  email: "xiaoming@example.com",
  hobbies: ["编程", "阅读", "游戏"],
  address: { city: "北京", district: "海淀区" }
});

// 批量插入
db.users.insertMany([
  { name: "小红", age: 23, tags: ["前端"] },
  { name: "小刚", age: 28, tags: ["后端", "运维"] }
]);

// 条件查询:年龄大于24且爱好包含编程
db.users.find({
  age: { $gt: 24 },
  hobbies: "编程"
}).sort({ age: -1 }).limit(10);

// 更新文档
db.users.updateOne(
  { name: "小明" },
  { $set: { age: 26 }, $push: { hobbies: "音乐" } }
);

// 聚合管道:统计每个城市用户数和平均年龄
db.users.aggregate([
  { $match: { age: { $gte: 18 } } },
  { $group: {
      _id: "$address.city",
      userCount: { $sum: 1 },
      avgAge: { $avg: "$age" }
  }},
  { $sort: { userCount: -1 } }
]);

四、适合人群

  • 后端开发者,想要学习NoSQL数据库
  • 数据工程师,处理非结构化或半结构化数据
  • 全栈开发者,需要灵活的数据存储方案
  • 从关系型数据库转向NoSQL的开发者

五、学习建议

MongoDB的查询语法和SQL差异较大,建议多动手实践。重点理解文档模型设计原则——何时嵌入、何时引用。聚合管道是MongoDB的强大功能,务必熟练掌握。学习时要建立正确的NoSQL思维,不要完全照搬关系型数据库的设计模式。

🎯 开始你的MongoDB学习之旅吧!

课程信息:
共 4 个章节

暂无内容