MongoDB(芒果数据库)学习(一)———增删改查
MongoDB數據庫CRUD(增刪改查)的操作
(1)NoSQL 簡介
NoSQL有時也稱作Not Only SQL的縮寫,意即"不僅僅是SQL"。
現代的計算網絡,每天上都會產生大量數據。
這些數據大部分都是由關系性數據庫系統(RDBMS)來管理的。
NoSQL用于超大規模數據的存儲。
現在針對大數據處理以及高并發、高讀寫推薦使用,NoSQL被廣泛應用。(例如國外的谷歌、Facebook。國內阿里、騰訊每天為用戶收集萬億比特的數據)等,創業型公司很多使用。NoSQL無需多余操作就可以橫向擴展。
(2)MongoDB三個概念
MongoDB的數據模型是面向文檔的,簡單理解 這個數據庫中存的是各種各樣的 JSON。(BSON)。
MongoDB屬于NOSQL,了解mongodb需要先知道這三個名詞代表含義。
數據庫是一個倉庫,在倉庫中可以存放集合。
集合類似于數組,在集合中可以存放文檔。
(類似于SQL中的表空間)
文檔數據庫中的最小單位,我們存儲和操作的 內容都是文檔。
(類似于SQL中的表)
以上為了方便理解與傳統SQL進對比,但之后不要SQL思想去學習。
二、MongoDB操作
(1)MongoDB基本指令
在mongodb中,數據庫和集(collection)都不需要手動創建,當我們創建的文檔時,如果文檔所在的集合或數據庫都沒有,mongodb會自動創建集合與數據庫。
基本指令:
1、Show dbs/Show databases
顯示當前的所有數據庫
2、Use test_table
進入document文件(或者表中)
3、db
表示當前所處數據庫
4、show collections
顯示所有集合
(2)數據庫CRUD的操作
操作工具使用的是studio3T。
因為使用語法,還是想講的細一點兒。會附截圖。
1、Insert(向集合中插入文檔)
單個:db.collection.insert()或者 db.collection.insertOne()
db.emp.insert({name:“索隆”,postion:“左副”,gender:“男”});
多個:db.collection.insertMany()
這里需要注意下寫法,"[ ]" ,如果寫成了
會只有一條記錄,之后也會有"[ ]" 這種問題,但只是寫法問題就不去提了。
所以寫成:
或者寫成官方文檔格式:
都是可以的。
以上是Insert()、insertOne()、insertmany()、區別不大。
但One會明確插入一個,Many會插入多個,在官方文檔也是說明在3.2版本后追加的新功能,肯定還是有一定作用。
之后的改刪會有區別。有詳講。
2、Find(查詢所有符合條件的文檔)
多個:db.collection.find()
因為沒有檢索條件,就全部顯示出
在混合寫法中,默認為且條件
沒有符合條件的數據就顯示為零條。
單個:db.collection.findOne()或者db.collection.find(條件)
圖示12行代碼為檢索符合條件,顯示第一條數據。
圖示13行代碼為檢索符合條件,顯示第2條( [序數])數據。
值得注意的是find(返回的是數組),find返回的是對象,可通過打點調用的方式,返回數組大小或者對象屬性。
3、Update(修改符合條件的文檔)
修改字段值:db.collection.update() //db.collection.updateMany()
我們想把這個“娜美”的性別變換為女性。
按照官方文檔我們成功的將性別進行了更改。
如果我們沒有寫$set會發生以下情況。
看日志是成功了!
但實際人給弄丟了。
增加字段值:db.collection.update()
針對沒有的字段,不用像Oracle新建,直接就可自動創建。
除了在update中增加字段,在insert時mongodb都會根據需要自動創建。因此擴展性強。
但值得注意的是,數據中有兩個“索隆”,update與updateOne 都只是默認改第一個,不過可以使用。db.collection.updateMany()去修改多個,所有匹配的,都會更改,在此不再截圖證明了。
但update實際是updateOne()與updateMany()的綜合體
在官方文檔中,update有很多屬性,當使用update將multi設置為true時即可更改多條符合條件數據。
當我們執行以下指令:
會發現符合條件的數據都發生了變化!
4、Delete(修改符合條件的文檔)
刪除數據:
db.collection.deleteOne()
db.collection.deleteMany()
db.collection.remove()
在這里,deleteMany與remove的處理結果都是相同的都是符合條件所有數據
但是在remove屬性,增加true條件會只刪除一個,deleteone效果相同,官方文檔有說明:
但常同刪除數據的方法,是將其中一個字段設置為isDel為1,當顯示數據時顯示isDel為0的數據,即可達成刪除數據的目的。好處是任何刪除的數據,都可還原,提高數據安全性。
刪除集合
db.collection.remove()
db.collection.drop()
當使用:
db.emp.remove({});
db.emp.drop();
會將collection也刪除掉
如果remove方法傳入空對象,也會將集合刪除
但處理過程為一條條刪除,效率會很低,當真的需要刪除時,可直接使用db.collection.drop()。
當然還有db.dropdatabase().刪除數據庫,除非你已經做好了刪庫跑路的準備。還有2020年2月24號的新聞,惡意刪庫犯罪人被判刑了兩年,因此你們懂得!
三、結語:
感謝閱讀文章,您的贊是對我的激勵。如有錯誤請示作者改正,萬分感謝。
認真做好每一件事,只為做個細心的人。
長大后發現時間流逝的真的很快。
有這樣一個小故事: 曾國藩小時晚上背書,墻外有個小偷,就等呀等呀!等了很多個時辰,發現還沒背完。最后小偷生氣的一腳踹開門,當著曾國藩的面將他背誦的內容背誦了出來。
并羞辱的說道:你這么笨還浪費什么燈油。
但十年后,小偷仍舊是小偷,而曾國藩已經成了舉世聞名的大人物!
時間不是用來流逝的,而是用來積累的。
加油!
總結
以上是生活随笔為你收集整理的MongoDB(芒果数据库)学习(一)———增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Palo Alto Networks全球
- 下一篇: 芒果数据库