MongoDB 创建数据库

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 mydbshow 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 AtlasWeb 界面点击 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 云数据库创建,欢迎继续提问!

文章已创建 2349

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部