数据库、集合和文档

学 MongoDB,先把这三个概念弄清楚:

database -> collection -> document

一、数据库 database

数据库是一组相关数据的集合。

切换数据库:

use mongodb_tutorial

MongoDB 里 use 一个不存在的数据库不会立刻创建它。

只有当你真正写入数据时,数据库才会出现。

db.users.insertOne({ username: "zhangsan" })

此时 mongodb_tutorial 才真正有数据。

二、集合 collection

集合类似 MySQL 里的表。

例如:

集合保存什么
users用户
posts文章
comments评论

插入数据时,如果集合不存在,MongoDB 会自动创建:

db.posts.insertOne({
  title: "第一篇文章",
  content: "MongoDB 入门",
  authorId: ObjectId("665f0e0b6f8c2b5f8e123456"),
  createdAt: new Date()
})

三、文档 document

文档是一条数据。

{
  title: "第一篇文章",
  content: "MongoDB 入门",
  tags: ["mongodb", "database"],
  stats: {
    views: 100,
    likes: 3
  }
}

文档可以嵌套,这一点和 MySQL 的行很不一样。

四、_id 字段

每个文档都必须有 _id

如果你插入文档时没有指定,MongoDB 会自动生成一个 ObjectId

db.users.insertOne({
  username: "lisi"
})

查询:

db.users.findOne({ username: "lisi" })

结果里会有:

{
  _id: ObjectId("..."),
  username: "lisi"
}

_id 类似 MySQL 的主键,默认有唯一索引。

五、集合命名建议

建议:

  • 使用小写英文。
  • 多个单词用下划线或小驼峰,团队保持统一。
  • 集合名通常用复数,例如 usersposts
  • 不要使用中文集合名。

常见命名:

users
posts
comments
audit_logs

六、第一次练习

切换数据库:

use mongodb_tutorial

插入用户:

db.users.insertOne({
  username: "wangwu",
  email: "wangwu@example.com",
  status: "active",
  createdAt: new Date()
})

查询用户:

db.users.find({ status: "active" })

删除练习数据:

db.users.deleteOne({ username: "wangwu" })

先会增、查、删,再去理解更复杂的条件和索引。