首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mongoDB简明教程

mongoDB简明教程

原创
作者头像
zzh-dahai
发布2025-07-07 13:47:57
发布2025-07-07 13:47:57
1830
举报

一、MongoDB 是什么?

  • 定位:开源的 NoSQL 文档数据库(非关系型),以 JSON 格式(BSON 二进制)存储数据。
  • 核心特点
    • 无固定表结构:自由存储嵌套数据(如用户信息包含订单列表)。
    • 水平扩展:通过分片(Sharding)支持海量数据。
    • 高性能读写:内存映射文件 + 索引优化。
    • 聚合管道:复杂数据分析利器。

二、核心概念 vs SQL 对比

SQL 术语

MongoDB 术语

说明

Database

Database

数据库(同名)

Table

Collection

表 → 集合

Row

Document

行 → 文档(JSON 格式)

Column

Field

列 → 字段

Primary Key

_id

主键(自动创建 ObjectId)


三、基础操作(命令行示例)

1. 数据库与集合管理
代码语言:javascript
复制
bash> use mydb              # 切换到数据库(不存在则自动创建)
> db.createCollection("users")  # 创建集合
> show collections      # 查看所有集合
> db.users.drop()       # 删除集合
2. 文档增删改查(CRUD)
  • 插入文档: jsdb.users.insertOne({ name: "Alice", age: 25, tags: ["tech", "music"] })
  • 批量插入: jsdb.users.insertMany([ {name: "Bob", age: 30}, {name: "Charlie", age: 35} ])
  • 查询文档: jsdb.users.find() // 查所有 db.users.find({ age: { $gt: 25 } }) // 年龄 >25 db.users.findOne({ name: "Alice" }) // 查第一条
  • 更新文档: jsdb.users.updateOne( { name: "Alice" }, { $set: { age: 26 } } // 更新字段 )
  • 删除文档: jsdb.users.deleteOne({ name: "Bob" })

四、高级查询技巧

1. 运算符示例

运算符

含义

示例

$eq

等于

{ age: { $eq: 25 } }

$in

在列表中

{ tags: { $in: ["tech"] } }

$gt

大于

{ age: { $gt: 30 } }

$regex

正则匹配

{ name: { $regex: /^A/ } } (A开头)

2. 聚合管道(Aggregation)

统计每个年龄段人数:

代码语言:javascript
复制
jsdb.users.aggregate([
  { $group: { 
      _id: "$age", 
      count: { $sum: 1 } 
  }}
])

输出:[ { "_id": 25, "count": 1 }, { "_id": 30, "count": 1 } ]


五、索引优化

  • 创建索引(加速查询): jsdb.users.createIndex({ name: 1 }) // 1为升序,-1为降序
  • 查看索引: jsdb.users.getIndexes()
  • 索引类型
    • 单字段索引{ name: 1 }
    • 复合索引{ name: 1, age: -1 }
    • 文本索引(全文搜索):db.articles.createIndex({ content: "text" })

六、安全与备份

1. 启用身份验证
代码语言:javascript
复制
bash# 启动时开启访问控制
mongod --auth

# 创建管理员
use admin
db.createUser({
  user: "admin",
  pwd: "123456",
  roles: ["root"]
})
2. 数据备份与恢复
代码语言:javascript
复制
bash# 备份整个数据库
mongodump -d mydb -o ./backup

# 恢复数据
mongorestore -d mydb ./backup/mydb

七、适用场景

场景

优势

实时日志分析

灵活存储半结构化日志

内容管理系统(CMS)

嵌套存储文章+评论数据

物联网(IoT)设备数据

高写入吞吐量

用户行为轨迹

动态字段(如点击事件属性)


八、学习资源

  • 官方文档:https://www.mongodb.com/docs/
  • 图形化工具:MongoDB Compass(可视化操作)
  • 练习平台:MongoDB University(免费课程)

总结:MongoDB 适合处理多变数据结构高并发场景,但需注意:

  • 避免过度嵌套(文档不超过 16MB)。
  • 联表查询用 $lookup(性能低于 SQL Join)。
  • 事务支持需集群部署(≥ v4.0)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、MongoDB 是什么?
  • 二、核心概念 vs SQL 对比
  • 三、基础操作(命令行示例)
    • 1. 数据库与集合管理
    • 2. 文档增删改查(CRUD)
  • 四、高级查询技巧
    • 1. 运算符示例
    • 2. 聚合管道(Aggregation)
  • 五、索引优化
  • 六、安全与备份
    • 1. 启用身份验证
    • 2. 数据备份与恢复
  • 七、适用场景
  • 八、学习资源
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档