一、什么是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")
]
}
五、注意事项¶
- 集合名称:区分大小写,且不能包含特殊字符(除
$、.等合法符号外)。 - 数据类型:文档中字段类型灵活,字符串需加引号(如
name: "Bob"),数字直接写(如age: 20),日期需用new Date()表示(如birth: new Date("2000-01-01"))。 - 唯一性:
insertOne()/insertMany()插入的数据会自动生成_id,确保同一集合内文档唯一(即使字段重复也不影响)。 - 删除不可逆:执行
drop()操作后数据无法恢复,建议操作前备份或确认集合存在。
总结¶
- 创建集合:显式用
createCollection(),隐式通过插入数据自动创建。 - 删除集合:用
drop(),永久删除且无恢复机制。 - 插入数据:单文档用
insertOne(),多文档用insertMany(),文档格式为键值对。
通过以上操作,你已经掌握了MongoDB中最基础的集合管理和数据插入方法,接下来可以尝试在MongoDB Shell或可视化工具(如Robo 3T)中实践操作,加深理解!