MongoDB 创建数据库完整指南
(MongoDB 8.0+,2025 年最新实践)
核心结论:
MongoDB 没有CREATE DATABASE命令!
数据库通过use + 插入数据自动创建。
一、MongoDB 数据库创建机制
| 行为 | 结果 |
|---|---|
use mydb | 切换到 mydb(不存在也不报错) |
db.collection.insertOne(...) | 首次写入时,自动创建 mydb 数据库 + collection |
show dbs | 只有有数据的数据库才会显示 |
// 步骤 1:切换到不存在的数据库(不会创建)
use company
// 步骤 2:插入第一条数据 → 数据库 + 集合自动创建
db.employees.insertOne({
name: "张三",
age: 30,
department: "技术部"
})
// 步骤 3:现在才能看到
show dbs
// 输出:company 0.000GB
二、创建数据库的正确姿势(3 种方式)
方式 1:use + insertOne(推荐)
use ecommerce
db.products.insertOne({
name: "iPhone 16",
price: 7999,
stock: 100,
tags: ["手机", "苹果"]
})
优点:简单、直观、开发友好
适用:所有场景
方式 2:use + createCollection(显式创建集合)
use logs
// 显式创建集合(数据库仍需写入数据才可见)
db.createCollection("access_logs")
// 插入数据
db.access_logs.insertOne({
ip: "192.168.1.100",
timestamp: new Date(),
url: "/api/users"
})
适用:需要预创建集合(如 Capped Collection)
方式 3:db.createCollection() + 选项(高级)
use iot
// 创建时序集合(Time Series)
db.createCollection("sensor_data", {
timeseries: {
timeField: "timestamp",
metaField: "device",
granularity: "minutes"
}
})
// 插入数据
db.sensor_data.insertOne({
timestamp: new Date(),
device: "temp_001",
value: 23.5
})
三、为什么 show dbs 看不到刚 use 的数据库?
use testdb
show dbs // 看不到 testdb!
db.test.insertOne({x: 1})
show dbs // 现在可以看到:testdb 0.000GB
原因:MongoDB 是 惰性创建(Lazy Creation)
只有写入数据,数据库才真正存在。
四、创建数据库的完整示例(带用户权限)
// 1. 连接管理员
mongosh -u admin -p --authenticationDatabase admin
// 2. 创建数据库 + 写入数据
use blog
db.articles.insertOne({
title: "MongoDB 入门",
author: "Alice",
content: "...",
published: true,
createdAt: new Date()
})
// 3. 创建应用用户(最小权限)
use blog
db.createUser({
user: "blog_app",
pwd: "Blog2025!",
roles: [{ role: "readWrite", db: "blog" }]
})
五、常见误区与澄清
| 误区 | 正确做法 |
|---|---|
db.createDatabase("mydb") | 不存在此命令 |
CREATE DATABASE mydb; | SQL 语法,MongoDB 不支持 |
use mydb 后 show dbs 看不到 | 必须插入数据 |
| 以为数据库要手动创建 | 自动创建,极简 |
六、高级:创建特殊类型数据库/集合
1. Capped Collection(固定大小,FIFO)
use cache
db.createCollection("sessions", {
capped: true,
size: 1048576, // 1MB
max: 1000 // 最多 1000 条
})
2. GridFS(大文件存储)
// 自动创建 fs.files 和 fs.chunks
use files
// 使用 mongofiles 工具上传
mongofiles put video.mp4
七、验证数据库是否创建成功
// 1. 查看所有数据库
show dbs
// 2. 查看当前数据库
db
// 3. 查看集合
show collections
// 4. 查看统计信息
db.stats()
// 5. 查看数据
db.employees.find().pretty()
八、删除数据库(慎用!)
// 删除当前数据库
db.dropDatabase()
// 或指定
use company
db.dropDatabase()
警告:不可恢复!生产环境建议用 备份 + 逻辑删除
九、GUI 工具创建数据库
| 工具 | 操作 |
|---|---|
| MongoDB Compass | 左侧点击 Create Database → 填写名称 + 集合名 → Create |
| VS Code + MongoDB | 右键 Databases → Add Database |
| MongoDB Atlas | Web 界面点击 Create Database |
十、一句话总结
“MongoDB 创建数据库 =
use dbname+insertOne()”
快速上手脚本
// create_db.js
use myapp
db.users.insertOne({
name: "管理员",
email: "admin@myapp.com",
role: "superadmin",
createdAt: new Date()
})
print("数据库 'myapp' 创建成功!")
printjson(db.stats())
运行:
mongosh create_db.js
官方文档:https://www.mongodb.com/docs/manual/core/databases-and-collections/
如需 批量创建数据库、数据库命名规范、从 MySQL 迁移数据库结构 或 Atlas 云数据库创建,欢迎继续提问!