日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MongoDB(芒果数据库)学习(一)———增删改查

發(fā)布時(shí)間:2023/12/10 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB(芒果数据库)学习(一)———增删改查 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MongoDB數(shù)據(jù)庫(kù)CRUD(增刪改查)的操作

(1)NoSQL 簡(jiǎn)介

NoSQL有時(shí)也稱作Not Only SQL的縮寫,意即"不僅僅是SQL"。
現(xiàn)代的計(jì)算網(wǎng)絡(luò),每天上都會(huì)產(chǎn)生大量數(shù)據(jù)。
這些數(shù)據(jù)大部分都是由關(guān)系性數(shù)據(jù)庫(kù)系統(tǒng)(RDBMS)來管理的。
NoSQL用于超大規(guī)模數(shù)據(jù)的存儲(chǔ)。
現(xiàn)在針對(duì)大數(shù)據(jù)處理以及高并發(fā)、高讀寫推薦使用,NoSQL被廣泛應(yīng)用。(例如國(guó)外的谷歌、Facebook。國(guó)內(nèi)阿里、騰訊每天為用戶收集萬億比特的數(shù)據(jù))等,創(chuàng)業(yè)型公司很多使用。NoSQL無需多余操作就可以橫向擴(kuò)展。

(2)MongoDB三個(gè)概念

MongoDB的數(shù)據(jù)模型是面向文檔的,簡(jiǎn)單理解 這個(gè)數(shù)據(jù)庫(kù)中存的是各種各樣的 JSON。(BSON)。
MongoDB屬于NOSQL,了解mongodb需要先知道這三個(gè)名詞代表含義。

  • 數(shù)據(jù)庫(kù)(database)
    數(shù)據(jù)庫(kù)是一個(gè)倉(cāng)庫(kù),在倉(cāng)庫(kù)中可以存放集合。
  • 集合(collection)
    集合類似于數(shù)組,在集合中可以存放文檔。
    (類似于SQL中的表空間)
  • 文檔(document)
    文檔數(shù)據(jù)庫(kù)中的最小單位,我們存儲(chǔ)和操作的 內(nèi)容都是文檔。
    (類似于SQL中的表)
  • 以上為了方便理解與傳統(tǒng)SQL進(jìn)對(duì)比,但之后不要SQL思想去學(xué)習(xí)。

    二、MongoDB操作

    (1)MongoDB基本指令

    在mongodb中,數(shù)據(jù)庫(kù)和集(collection)都不需要手動(dòng)創(chuàng)建,當(dāng)我們創(chuàng)建的文檔時(shí),如果文檔所在的集合或數(shù)據(jù)庫(kù)都沒有,mongodb會(huì)自動(dòng)創(chuàng)建集合與數(shù)據(jù)庫(kù)。
    基本指令:
    1、Show dbs/Show databases
    顯示當(dāng)前的所有數(shù)據(jù)庫(kù)

    2、Use test_table
    進(jìn)入document文件(或者表中)

    3、db
    表示當(dāng)前所處數(shù)據(jù)庫(kù)

    4、show collections
    顯示所有集合

    (2)數(shù)據(jù)庫(kù)CRUD的操作

    操作工具使用的是studio3T。
    因?yàn)槭褂谜Z法,還是想講的細(xì)一點(diǎn)兒。會(huì)附截圖。

    1、Insert(向集合中插入文檔)

    單個(gè):db.collection.insert()或者 db.collection.insertOne()
    db.emp.insert({name:“索隆”,postion:“左副”,gender:“男”});

    多個(gè):db.collection.insertMany()
    這里需要注意下寫法,"[ ]" ,如果寫成了

    db.emp.insert({name:"山治",postion:"右副",gender:"男"},{name:"喬巴",postion:"船醫(yī)生",gender:"中性"},{name:"娜美",postion:"領(lǐng)航員",gender:"男"},{name:"索隆",postion:"左副",gender:"男"} );

    會(huì)只有一條記錄,之后也會(huì)有"[ ]" 這種問題,但只是寫法問題就不去提了。

    所以寫成:

    db.emp.insert([{name:"山治",postion:"右副",gender:"男"},{name:"喬巴",postion:"船醫(yī)生",gender:"中性"},{name:"娜美",postion:"領(lǐng)航員",gender:"男"},{name:"烏索普",postion:"逆風(fēng)大神",gender:"男"},{name:"索隆",postion:"左副",gender:"男"} ]);


    或者寫成官方文檔格式:

    db.emp.insertMany([{name:"山治",postion:"右副",gender:"男"},{name:"喬巴",postion:"船醫(yī)生",gender:"中性"},{name:"娜美",postion:"領(lǐng)航員",gender:"男"},{name:"烏索普",postion:"逆風(fēng)大神",gender:"男"},{name:"索隆",postion:"左副",gender:"男"} ]);

    都是可以的。
    以上是Insert()、insertOne()、insertmany()、區(qū)別不大。
    但One會(huì)明確插入一個(gè),Many會(huì)插入多個(gè),在官方文檔也是說明在3.2版本后追加的新功能,肯定還是有一定作用。
    之后的改刪會(huì)有區(qū)別。有詳講。

    2、Find(查詢所有符合條件的文檔)

    多個(gè):db.collection.find()
    因?yàn)闆]有檢索條件,就全部顯示出

    在混合寫法中,默認(rèn)為且條件

    db.emp.find({name:"索隆",postion:"左副"});

    db.emp.find({name:"索隆",postion:"船醫(yī)"});

    沒有符合條件的數(shù)據(jù)就顯示為零條。

    單個(gè):db.collection.findOne()或者db.collection.find(條件)
    圖示12行代碼為檢索符合條件,顯示第一條數(shù)據(jù)。
    圖示13行代碼為檢索符合條件,顯示第2條( [序數(shù)])數(shù)據(jù)。

    值得注意的是find(返回的是數(shù)組),find返回的是對(duì)象,可通過打點(diǎn)調(diào)用的方式,返回?cái)?shù)組大小或者對(duì)象屬性。

    3、Update(修改符合條件的文檔)

    修改字段值:db.collection.update() //db.collection.updateMany()

    我們想把這個(gè)“娜美”的性別變換為女性。
    按照官方文檔我們成功的將性別進(jìn)行了更改。

    db.emp.update({name:"娜美"},{$set:{gender:"女"}} );


    如果我們沒有寫$set會(huì)發(fā)生以下情況。

    db.emp.update({name:"娜美"},{gender:"女"});


    看日志是成功了!

    但實(shí)際人給弄丟了。

    增加字段值:db.collection.update()
    針對(duì)沒有的字段,不用像Oracle新建,直接就可自動(dòng)創(chuàng)建。
    除了在update中增加字段,在insert時(shí)mongodb都會(huì)根據(jù)需要自動(dòng)創(chuàng)建。因此擴(kuò)展性強(qiáng)。

    db.emp.update({name:"索隆"},{$set:{dream:"第一大劍豪"} } );


    但值得注意的是,數(shù)據(jù)中有兩個(gè)“索隆”,update與updateOne 都只是默認(rèn)改第一個(gè),不過可以使用。db.collection.updateMany()去修改多個(gè),所有匹配的,都會(huì)更改,在此不再截圖證明了。
    但update實(shí)際是updateOne()與updateMany()的綜合體
    在官方文檔中,update有很多屬性,當(dāng)使用update將multi設(shè)置為true時(shí)即可更改多條符合條件數(shù)據(jù)。

    當(dāng)我們執(zhí)行以下指令:

    db.emp.update({gender:"男"},{$set:{describe:"可愛的憨憨"} },{multi:true} );

    會(huì)發(fā)現(xiàn)符合條件的數(shù)據(jù)都發(fā)生了變化!

    4、Delete(修改符合條件的文檔)

    刪除數(shù)據(jù):
    db.collection.deleteOne()
    db.collection.deleteMany()
    db.collection.remove()
    在這里,deleteMany與remove的處理結(jié)果都是相同的都是符合條件所有數(shù)據(jù)

    db.emp.deleteMany({name:"索隆"})


    但是在remove屬性,增加true條件會(huì)只刪除一個(gè),deleteone效果相同,官方文檔有說明:

    db.emp.remove({name:"索隆"}true )

    但常同刪除數(shù)據(jù)的方法,是將其中一個(gè)字段設(shè)置為isDel為1,當(dāng)顯示數(shù)據(jù)時(shí)顯示isDel為0的數(shù)據(jù),即可達(dá)成刪除數(shù)據(jù)的目的。好處是任何刪除的數(shù)據(jù),都可還原,提高數(shù)據(jù)安全性。

    刪除集合
    db.collection.remove()
    db.collection.drop()
    當(dāng)使用:
    db.emp.remove({});
    db.emp.drop();
    會(huì)將collection也刪除掉


    如果remove方法傳入空對(duì)象,也會(huì)將集合刪除
    但處理過程為一條條刪除,效率會(huì)很低,當(dāng)真的需要?jiǎng)h除時(shí),可直接使用db.collection.drop()。

    當(dāng)然還有db.dropdatabase().刪除數(shù)據(jù)庫(kù),除非你已經(jīng)做好了刪庫(kù)跑路的準(zhǔn)備。還有2020年2月24號(hào)的新聞,惡意刪庫(kù)犯罪人被判刑了兩年,因此你們懂得!

    三、結(jié)語:

    感謝閱讀文章,您的贊是對(duì)我的激勵(lì)。如有錯(cuò)誤請(qǐng)示作者改正,萬分感謝。

    認(rèn)真做好每一件事,只為做個(gè)細(xì)心的人。

    長(zhǎng)大后發(fā)現(xiàn)時(shí)間流逝的真的很快。

    有這樣一個(gè)小故事: 曾國(guó)藩小時(shí)晚上背書,墻外有個(gè)小偷,就等呀等呀!等了很多個(gè)時(shí)辰,發(fā)現(xiàn)還沒背完。最后小偷生氣的一腳踹開門,當(dāng)著曾國(guó)藩的面將他背誦的內(nèi)容背誦了出來。
    并羞辱的說道:你這么笨還浪費(fèi)什么燈油。
    但十年后,小偷仍舊是小偷,而曾國(guó)藩已經(jīng)成了舉世聞名的大人物!

    時(shí)間不是用來流逝的,而是用來積累的。

    加油!

    總結(jié)

    以上是生活随笔為你收集整理的MongoDB(芒果数据库)学习(一)———增删改查的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。