{T}

MongoDB 概述与安装

MongoDB 是一款领先的、基于分布式文件存储的开源 NoSQL 数据库。由 C++ 语言编写,旨在为现代 Web 应用提供兼具可扩展性、灵活性和高性能的数据存储解决方案。

MongoDB 核心特性

特性说明
灵活的文档模型以 BSON 格式存储数据,无需预定义模式,字段可动态增减
高可用性通过副本集(Replica Set)实现数据冗余和自动故障转移
水平可扩展性通过分片(Sharding)支持海量数据存储,可线性扩展
丰富的查询语言支持字段查询、范围查询、正则表达式、聚合框架、全文检索
事务支持4.0+ 支持多文档事务,4.2+ 支持分布式事务
索引支持支持多种索引类型:单字段、复合、文本、地理空间、TTL 等

SQL 与 MongoDB 术语对比

关系型数据库MongoDB描述
DatabaseDatabase数据库的容器
TableCollection文档的集合
RowDocument一条记录
ColumnField文档中的键值对
IndexIndex提升查询性能
Primary Key_id文档的唯一标识符
JOIN$lookup表关联(聚合阶段)
GROUP BY$group分组聚合
SELECTfind()查询数据

文档与 _id

MongoDB 的核心数据单元是"文档",由键值对构成:

json
{
  "_id": ObjectId("6388b3d94a33f23a9735a257"),
  "name": "Alice",
  "age": 30,
  "courses": ["Math", "Physics"],
  "address": {
    "street": "123 Main St",
    "city": "Anytown"
  }
}
  • _id 字段:每个文档的唯一标识,如未指定会自动生成 ObjectId
  • ObjectId 结构:12 字节 = 4字节时间戳 + 5字节随机值 + 3字节计数器
code
ObjectId 结构(12 字节):
┌────────────┬──────────────────┬─────────────┐
│ 时间戳(4B) │   随机值(5B)     │ 计数器(3B)  │
└────────────┴──────────────────┴─────────────┘

BSON 数据类型

类型描述示例
Double64位浮点数10.99
StringUTF-8 字符串"Hello"
Object嵌入式文档{ "field": "value" }
Array数组["apple", "banana"]
ObjectId文档唯一 IDObjectId()
Boolean布尔值true / false
Date日期时间(毫秒精度)new Date()
Null空值null
Int32/Int6432/64位整数NumberInt("100")
Decimal128高精度小数NumberDecimal("10.99")
Binary二进制数据BinData(0, "base64")
Timestamp内部时间戳Timestamp(1234567890, 1)

安装与配置

macOS 安装

bash
# 使用 Homebrew 安装
brew tap mongodb/brew
brew install mongodb-community@7.0

# 启动服务
brew services start mongodb/brew/mongodb-community

# 验证安装
mongosh --version

Windows 安装

  1. 下载 MongoDB 官网 的 MSI 安装包
  2. 运行安装程序,推荐选择"Complete"安装类型
  3. bin 目录添加到系统 Path 环境变量
  4. 创建数据目录:mkdir C:\data\db

Linux 安装(Ubuntu)

bash
# 导入 MongoDB 公钥
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -

# 添加源
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# 安装
sudo apt update
sudo apt install -y mongodb-org

# 启动
sudo systemctl start mongod
sudo systemctl enable mongod

启动与验证

bash
# macOS
brew services start mongodb/brew/mongodb-community

# Linux
sudo systemctl start mongod

# 手动启动(开发环境)
mongod --dbpath /path/to/data --port 27017

# 验证连接
mongosh

# 在 mongosh 中测试
> db.version()
7.0.x
> show dbs

启用访问控制

生产环境必须启用认证:

javascript
// 1. 创建管理员用户
use admin
db.createUser({
  user: "myAdmin",
  pwd: passwordPrompt(),  // 或直接写密码字符串
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" }
  ]
})
yaml
# 2. 修改配置文件 mongod.conf(通常位于 /usr/local/etc/mongod.conf 或 /etc/mongod.conf)
security:
  authorization: enabled

# 完整配置示例
storage:
  dbPath: /usr/local/var/mongodb
  journal:
    enabled: true
systemLog:
  destination: file
  path: /usr/local/var/log/mongodb/mongo.log
  logAppend: true
net:
  port: 27017
  bindIp: 127.0.0.1
security:
  authorization: enabled
bash
# 3. 重启服务后使用凭据连接
mongosh -u myAdmin -p --authenticationDatabase admin

# 连接字符串格式
mongosh "mongodb://myAdmin:password@localhost:27017/admin"

常用角色说明

角色权限范围适用场景
root超级用户管理员账户
userAdminAnyDatabase所有库的用户管理用户管理员
readWriteAnyDatabase所有库的读写权限应用账户
readWrite单库读写权限应用账户
dbAdmin单库管理权限数据库维护
clusterAdmin集群管理集群运维

下一篇MongoDB 基础操作