MongoDB 创建数据库
MongoDB 中创建数据库非常简单,不需要显式的创建命令,只需要使用 use 命令切换到不存在的数据库,然后插入数据即可。
创建数据库
基本语法
javascript
use 数据库名示例
javascript
// 切换到 mydb 数据库(如果不存在则创建)
use mydb
// 查看当前数据库
db
// 输出: mydb验证数据库创建
javascript
// 插入一条数据,数据库才真正创建
db.users.insertOne({ name: "张三", age: 25 })
// 查看所有数据库
show dbs
// 输出:
// admin 0.000GB
// config 0.000GB
// local 0.000GB
// mydb 0.000GB ← 新创建的数据库数据库命名规则
命名规范
- 不能是空字符串
- 不能包含空格、
.、$、/、\和\0(空字符) - 应全部小写(推荐)
- 最多 64 字节
- 不能与系统保留名称冲突
保留数据库名
- admin: 权限管理数据库
- local: 本地数据存储,不复制
- config: 分片集群配置信息
有效命名示例
javascript
use mydb // ✓ 有效
use my_database // ✓ 有效
use db123 // ✓ 有效
use userData // ✓ 有效(但不推荐大小写混合)无效命名示例
javascript
use my.db // ✗ 包含点号
use my$db // ✗ 包含美元符号
use my db // ✗ 包含空格
use admin // ⚠️ 系统保留名(可用但不建议)查看数据库
列出所有数据库
javascript
show dbs
// 或
show databases查看当前数据库
javascript
db获取数据库统计信息
javascript
db.stats()输出示例:
json
{
"db": "mydb",
"collections": 2,
"views": 0,
"objects": 5,
"avgObjSize": 45.2,
"dataSize": 226,
"storageSize": 36864,
"indexes": 2,
"indexSize": 36864
}切换数据库
javascript
// 切换到 test 数据库
use test
// 切换到 admin 数据库
use admin
// 切换回 mydb
use mydb数据库操作示例
完整示例流程
javascript
// 1. 创建/切换到新数据库
use company
// 2. 创建集合并插入数据
db.employees.insertOne({
name: "张三",
department: "技术部",
salary: 15000,
hireDate: new Date()
})
// 3. 创建另一个集合
db.departments.insertOne({
name: "技术部",
manager: "张三",
location: "3楼"
})
// 4. 查看数据库列表
show dbs
// 5. 查看当前数据库统计
db.stats()数据库大小限制
理论限制
- 命名空间文件大小:默认 16MB(可配置)
- 集合数量:受命名空间限制,约 12,000 个
- 数据库数量:无硬性限制(受文件系统限制)
实际考虑因素
- 文件系统限制
- 硬件资源(磁盘空间、内存)
- 管理复杂度
多数据库架构设计
按环境分离
myapp_dev // 开发环境
myapp_test // 测试环境
myapp_prod // 生产环境按功能分离
myapp_users // 用户数据
myapp_orders // 订单数据
myapp_logs // 日志数据按租户分离(多租户)
tenant_a_data // 租户A数据
tenant_b_data // 租户B数据
tenant_c_data // 租户C数据最佳实践
1. 命名规范
javascript
// 推荐:小写字母,下划线分隔
use ecommerce_db
use user_service_db
// 不推荐
use EcommerceDB // 大小写混合
use ecommerce-db // 使用连字符2. 文档注释
javascript
// 在数据库中创建说明文档
db.metadata.insertOne({
description: "用户服务数据库",
created: new Date(),
owner: "技术团队",
purpose: "存储用户信息和认证数据"
})3. 权限规划
javascript
// 为不同数据库创建独立用户
use admin
db.createUser({
user: "ecommerce_app",
pwd: "password",
roles: [
{ role: "readWrite", db: "ecommerce_db" }
]
})常见问题
Q: 创建了数据库但 show dbs 看不到?
A: 空数据库不会显示,需要插入数据后才可见。
javascript
use newdb
show dbs // 看不到 newdb
db.test.insertOne({}) // 插入数据
show dbs // 现在可以看到 newdbQ: 如何重命名数据库?
A: MongoDB 没有直接重命名命令,需要:
- 使用
mongodump导出 - 使用
mongorestore恢复到新名称
bash
# 导出原数据库
mongodump --db oldname --out /backup/
# 恢复到新数据库
mongorestore --db newname /backup/oldname/
# 删除原数据库
mongosh --eval "db.getSiblingDB('oldname').dropDatabase()"Q: 数据库创建后如何修改配置?
A: 数据库本身配置较少,主要通过:
- 集合级别配置
- 服务器配置文件
- 运行时参数
总结
MongoDB 创建数据库的特点:
- 延迟创建:使用
use命令不会立即创建数据库 - 自动创建:首次插入数据时自动创建
- 灵活命名:遵循简单命名规则
- 轻量级:创建成本低,可按需创建多个数据库
在下一章中,我们将学习 MongoDB 删除数据库。