mongo DB 內多個 DB 之下的階層稱為 Collections,由多個 Collection 組成,而每個 collection 其實就等同於關聯式資料庫的一張資料表( table )的意思; 而每個 collection 下面都可新增並且存放許多的 Documents 進行資料運用; 這樣的 Documents 是什麼呢? 其實就是 Objects 的意思,每一個 Document 其實就是新增進去該 Collection 的一個 Object ,這也就是 Mongo DB 作為物件類型資料庫, 以物件形式存放資料的核心所在。

MongoDB - CRUD 語法

DOC 連結

Insertion(Create)

// 在當前 db 的該 collection 新增一個 物件
db.collection名稱.insertOne({ Object內容 });

// 在當前 db 的該 collection 新增多個 物件
db.collection名稱.insertMany([{ Object1內容 },
														  { Object2內容 },
														  { Object3內容 }]);

// 綜合,單複數皆可用,用法同上
db.collection名稱.insert(...Object);

Find(Read)

// 1. 找到該collection (inventory) 所有內容
// find 沒加任何參數的話會返回該 collection 所有內容,其中 invenotry 等同 collection
// 這句跟 SQL SELECT * FROM inventory(table) 意思相同
db.inventory.find() 

// 2.fliter document(Object) 
// {} 內為篩選的屬性條件,會返回符合的 object 集合
db.inventory.find({ property: "value" }) 

※ 另外,針對巢狀物件進階查找的介紹寫在後面

Update

// 更新某個 document 物件;第一個參數是篩選條件(JSON形式), 第二個參數是欲改的屬性跟值(JSON形式)
db.collection.updateOne({篩選屬性: 篩選值}, 
												{$set: {欲改屬性: 欲改值}, $currentDate: {lastModified: true}})

// 每個符合條件的物件都會更新( updateOne只會更新符合條件的第一個 )
db.collection.updateMany({篩選屬性: 篩選值}, 
												 {$set: {欲改屬性: 欲改值}, $currentDate: {lastModified: true}})

// $currentDate 屬性為修改時間,不一定要加入

Delete

// 刪除符合該篩選條件的 第一個 document
db.collection.updateOne({篩選屬性: 篩選值})

// 刪除符合該篩選條件的 所有的 documents
db.collection.updateMany({篩選屬性: 篩選值})

進階查找

參考DOC

需要進行一些較為複雜的巢狀查找時:

// 巢狀查找
// 找到該巢狀結構 body 中的 age 為 20 的學生
db.students.find({ "body.age": 20 }) 

需要利用比較運算子時: DOC

// 以 $gt (greater)為例,找年紀比 20 大的學生
db.students.find({ "body.age": {$gt: 20} }) 

用 $in 找到有該指定屬性的物件: