一、什麼是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)中實踐操作,加深理解!