MongoDB集合操作:创建、删除与数据插入

一、什么是MongoDB集合?

在MongoDB中,集合(Collection) 相当于关系型数据库中的“表”,但它存储的是文档(Document)(类似JSON的结构)。与表不同的是,集合中的文档不需要有固定的字段结构,不同文档可以包含不同的字段,非常灵活。

二、创建集合

创建集合有两种方式:显式创建(通过命令手动创建)和隐式创建(插入数据时自动创建)。

1. 显式创建集合(createCollection())

使用 db.createCollection(集合名) 命令可以手动创建集合。例如,创建一个名为 students 的集合:

// 在MongoDB Shell中执行
db.createCollection("students")
  • 如果执行成功,会返回 { "ok" : 1 } 表示集合创建成功。
  • 可选参数:可以设置集合的属性,比如 capped(固定大小集合,旧数据自动删除)、size(固定大小字节数)等。例如创建一个固定大小的日志集合:
  db.createCollection("logs", { capped: true, size: 10000 })

(注:capped: true 表示启用固定大小,size: 10000 表示最大10KB,超出会自动覆盖旧数据)

2. 隐式创建集合(插入数据时自动创建)

如果插入数据时集合不存在,MongoDB会自动创建集合。例如,直接插入一个文档到不存在的 students 集合:

db.students.insertOne({ name: "Alice", age: 20 })

此时 students 集合会被自动创建,且插入的文档会被存储进去。

三、删除集合(drop())

删除集合使用 db.集合名.drop() 命令,执行后集合及其所有数据会被永久删除(无回收站),需谨慎操作!

语法

db.集合名.drop()
  • 如果集合存在且删除成功,返回 true;如果集合不存在或删除失败,返回 false

示例

// 删除名为students的集合
db.students.drop() // 成功则返回true,否则返回false

四、数据插入(insertOne()/insertMany())

MongoDB通过 insertOne()(单文档)和 insertMany()(多文档)插入数据,文档格式为 键值对(类似JSON),自动生成唯一 _id 字段(可自定义,但建议由MongoDB自动生成)。

1. 插入单个文档(insertOne())

语法:

db.集合名.insertOne(文档对象)
  • 示例:插入一个学生信息到 students 集合:
  db.students.insertOne({
    name: "Bob",
    age: 22,
    major: "Computer Science",
    hobbies: ["reading", "coding"] // 数组类型
  })
  • 返回结果
  {
    acknowledged: true,
    insertedId: ObjectId("60d21b4667d0d8992e610c85") // MongoDB自动生成的唯一ID
  }
2. 插入多个文档(insertMany())

语法:

db.集合名.insertMany([文档1, 文档2, ...])
  • 示例:插入两个学生信息:
  db.students.insertMany([
    { name: "Charlie", age: 21, major: "Mathematics" },
    { name: "Diana", age: 23, major: "Physics", isHonorStudent: true } // 可添加新字段
  ])
  • 返回结果
  {
    acknowledged: true,
    insertedIds: [
      ObjectId("60d21b4667d0d8992e610c86"),
      ObjectId("60d21b4667d0d8992e610c87")
    ]
  }

五、注意事项

  1. 集合名称:区分大小写,且不能包含特殊字符(除 $. 等合法符号外)。
  2. 数据类型:文档中字段类型灵活,字符串需加引号(如 name: "Bob"),数字直接写(如 age: 20),日期需用 new Date() 表示(如 birth: new Date("2000-01-01"))。
  3. 唯一性insertOne()/insertMany() 插入的数据会自动生成 _id,确保同一集合内文档唯一(即使字段重复也不影响)。
  4. 删除不可逆:执行 drop() 操作后数据无法恢复,建议操作前备份或确认集合存在。

总结

  • 创建集合:显式用 createCollection(),隐式通过插入数据自动创建。
  • 删除集合:用 drop(),永久删除且无恢复机制。
  • 插入数据:单文档用 insertOne(),多文档用 insertMany(),文档格式为键值对。

通过以上操作,你已经掌握了MongoDB中最基础的集合管理和数据插入方法,接下来可以尝试在MongoDB Shell或可视化工具(如Robo 3T)中实践操作,加深理解!

小夜