(3)被迫吃芒果的前端工程師 - MongoDB CRUD 之 Create
前言
前面認識了基本常見的 MongoDB Basic 操作之後,接下來當然就是要認識 CRUD 的部分,因此我們還是會繼續在終端機上面操作。
MongoDB CRUD
接下來聊聊 CRUD 的部分,雖然 CRUD 算是已經非常常見的,可是還是解釋一下各自單字所代表的意思
- C = Create
- 新增、建立或是創建
- R = Read
- 讀取、查詢
- U = Update
- 更新
- D = Delete
- 刪除
準備開始往下閱讀之前,建議你一樣先進入到 MongoDB 介面,然後輸入 use example
,因為接下來都會在 example
中做 CRUD 的練習與動作,如果你忘記怎麼進去的話,我也在提供一次流程
1 | mongo |
Create
雖然 C 代表著 Create 的意思,雖然 Create 代表著新增、建立或是創建的意思,但我們實際上使用的語法則是 Insertion。
而 MongoDb 有兩種新增語法的方式
db.collection.insertOne()
db.collection.insertMany()
insertOne
語法非常顧名思義,就是新增一筆的意思。
前面章節有提到 collection 代表的意思類似於 SQL 的 Tables,因此我們如果今天要新增的資料是一個使用者的話,那麼就要這樣輸入才對
1 | db.users.insertOne() |
那…為什麼是這樣輸入呢?讓我畫一張圖理解一下 MongoDB 的架構,首先先讓我們看一下基本的 db
架構
而我們通常輸入 db
就會直接顯示當前資料庫的位置,因此起手一定會是先 db
,後面第二個則是 collection
,就必須明確的說明是哪一個集合(集合),例如我現在要新增一筆資料到 Users 集合內
因此若要新增一個使用者的集合就必須寫 db.users.insertOne
或 db.users.insertMany
。
透過上面那張圖我們也可以理解到一件事情,如果你是想新增資料到 news
的集合的話,那麼就會是 db.news.insertOne
。
了解上面之後,讓我們拉回剛剛的兩個語法,也就是 db.collection.insertOne()
跟 db.collection.insertMany()
。
那 insertOne
跟 insertMany
有什麼差異呢?簡單來講就是一個一次只能新增一筆,另一個則是可以批次新增,
首先先讓我們使用單一新增將一個使用者資料新增到資料庫的 users
集合
1 | db.users.insertOne({ |
那麼當你輸入之後如果有新增成功 MongoDB 會回傳給你訊息告訴你有成功,然後這個 document ID 是什麼
1 | { |
如果你希望新增多筆資料的話,則是使用 insertMany
,而它會是一個陣列物件
1 | db.users.insertMany([ |
新增成功時 MongoDB 一樣會回傳結果給你,但你會發現 insertedId
也會變成一個陣列
1 | { |
那麼現在資料都已經被新增到 users 的 Collection 中,這些資料都稱之為 document,屬性與值在 MongoDB 中分別代表著 Field: value (字段與值),如果不好記的話,也可以想像成物件的 Key: value
而這就是整體的 MongoDB 架構。