我們在 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)了