MongoDB 2 之 手把手教你增刪改查
我們在 MongoDB 之 你得知道MongoDB是個什麼鬼 MongoDB - 1 中學習瞭如果安裝部署一個 MongoDB
如果沒看到我的金玉良言的話,就重新開啟一次客戶端和服務端吧
本章我們來學習一下關於 MongoDB的增刪改查
一.MongoDB操作 之 原生ORM,根本不存在SQL語句
建立資料庫:這裡和一般的關係型資料庫一樣,都要先建立一個自己的資料庫空間
嗯嗯嗯嗯,我感受到了你內心的驚呼,瞅瞅你們這些沒見過世面的樣子
是的,MongoDB設計的比較隨意,沒有就認為你是在建立,use LuffyCity_Com是不存在的,所以MongoDB就認為你是要建立並使用
這個概念一定要記清楚哦,MongoDB中如果你使用了不存在的物件,那麼就等於你在建立這個物件哦
使用了不存在的物件,就代表建立物件,我們使用這一謬論建立一張表(Collection)試試
看來真的不是謬論,真的成功的建立了一個Oldboy的Collection
那麼接下來就是在表(Collection)中新增一條資料了,怎麼新增呢?
二.MongoDB 之 插入資料(insert insertOne insertMany) 之 Collection 點兒出一切操作 之 insert
insert:插入一條或者多條資料,需要帶有允許插入多條的引數,這個方法目前官方已經不推薦嘍
db.Oldboy.insert({"name":"DragonFire","age":20})
insertOne: 插入一條資料,官方推薦
我們可以看出來兩種方法的返回值截然不同對吧
insertMany:插入多條資料,無需引數控制,官方推薦
這就是我們向LuffyCity_Com.Oldboy中插入了多條資料:
[{ "name":"DragonFire", "age":20 },
{
"name":"WuSir",
"age":19
}]
這裡留下一個資料型別的懸念
插入完成就要查詢
三.MongoDB 之 查詢資料(find findOne) 之 這裡沒有findMany
這裡不是select,如果你的第一反應是select 證明你關係型資料庫沒白學
find() 無條件查詢:將該表(Collection)中所有的資料一次性返回
db.Oldboy.find({name:"WuSir2b"}) 條件查詢:name等於WuSir2b的資料,這裡會返回多條結果
說到這裡,有的同學不禁要問一下:"_id":ObjectId("亂七八糟一道對看著毫無關係的一對字串") 是什麼,我們插入的時候並沒有一個欄位(Field)並沒有_id這個,
對了這就是MongoDB自動給我們新增到系統唯一標識"_id" 是一個ObjectId 型別,我們會在資料型別中第一個說到他(MongoDB 之 資料型別 最無聊! But 最有用! MongoDB - 3)
findOne()無條件查詢一條資料,預設當前Collection中的第一條資料
findOne({age:19}) : 條件查詢一條age等於19的資料,如有多條資料則返回更靠前的資料
查詢資料的時候,發現了有些資料出現錯誤了,要修改怎麼辦呢?
四.MongoDB 之 修改資料(update updateOne updateMany) 之 跟insert一樣,不推薦update的寫法
update({"name":"DragonFire"},{$set:{"age":21}}):根據條件修改該條資料的內容
把name等於DragonFire中的age改為21,這裡要注意的是({"條件"},{"關鍵字":{"修改內容"}}),其中如果條件為空,那麼將會修改Collection中所有的資料
關於$set關鍵字的解釋就是,本節最後再說,留個懸念
updateOne({"age":19},{$set:{"name":"WSSB"}}):根據條件修改一條資料的內容,如出現多條,只修改最高前的資料
把age等於19的所有資料中第一條資料的name改為WSSB
updateMany({"age":19},{$set:{"name":"pig_qi"}}):根據條件修改所有資料的內容,多條修改
把age等於19的所有資料中的name改為WSSB
上述中有一個$set的懸念,這個懸念呀,可能要留到再往後一些了
但是$set:{"name":"WSSB"}我還是要解釋一下: $set 是update時的關鍵字,表示我要設定name屬性的值為"WSSB"
那麼我們之前說過MongoDB的靈活性,沒有就代表我要建立,所以說如果該條Documents沒有name屬性,他就會自動建立一個name屬性並且賦值為"WSSB"
更改了半天,我覺得,這些資料我都不想要了,該怎麼辦呢?
四.MongoDB 之 刪除資料(remove) 之 如果你什麼都不寫,你講失去全部的生命力
remove({}):無條件刪除資料,這裡要注意了,這是刪除所有資料,清空Collection
當然了,我現在還不會操作,你看到的截圖是我全部都寫完之後的截圖,如果跟著操作的話,那麼你實在是太傻了,哈哈哈哈哈哈哈哈
如果你的資料全沒了,那麼請再練習一次insertMany([{"name":"DragonFire"}])吧,你多練習一次,總比馬上忘記要強吧
remove({"name":"DragonFire"}) : 條件刪除name等於"DragonFire"的所有Document
那麼到這裡呢,增刪改查就已經完事兒了
之後我們來說一下MongoDB的資料型別,跟你們透漏一下,MongoDB的資料型別,老(te)有(bie)意(wu)思(liao)了