1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        MongoDB,入門看這一篇足矣!

        共 11799字,需瀏覽 24分鐘

         ·

        2022-10-15 15:30


        一、介紹

        在介紹 MongoDB 之前,我先介紹一下業(yè)務(wù)開發(fā)的時候遇到的痛點(diǎn),以便大家對它有一個更加清晰的認(rèn)識!

        最近在用數(shù)據(jù)庫存儲數(shù)據(jù)的時候發(fā)現(xiàn)這么一個坑,例如從消息隊(duì)列中監(jiān)聽消息的時候,原來的做法是將監(jiān)聽的消息json數(shù)據(jù)存儲在數(shù)據(jù)庫,以便好對異常消息數(shù)據(jù)進(jìn)行追溯,消息內(nèi)容使用text類型存儲,起初因?yàn)閿?shù)據(jù)內(nèi)容很短,沒啥毛病,但是當(dāng)隨著業(yè)務(wù)的擴(kuò)展,收到的消息內(nèi)容越來越長,最后發(fā)現(xiàn)數(shù)據(jù)庫中的text字段類型無法很好的支持查詢,于是在這個時候,就開始考慮采用更加合適的數(shù)據(jù)庫來存儲這種消息數(shù)據(jù)!

        在經(jīng)過一番討論之后,對于這種 json 類型的消息數(shù)據(jù)的存儲,大家一致認(rèn)為采用 MongoDB 是最佳的選擇!

        據(jù)官方介紹,MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富、最像關(guān)系數(shù)據(jù)庫的一款高性能的 NoSQL 數(shù)據(jù)庫。

        MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。

        其中的文檔類似于 JSON 對象。字段值可以包含其他文檔、數(shù)組及文檔數(shù)組,數(shù)據(jù)結(jié)構(gòu)的支持非常靈活!

        的確,在使用的過程當(dāng)中,正如所介紹的,數(shù)據(jù)的存儲和查詢,性能極快,而且很好的滿足我們的需求!

        話不多說,下面我們就一起來了解一下,這款數(shù)據(jù)庫應(yīng)該如何使用!

        二、環(huán)境配置

        在學(xué)習(xí)它之前,我們需要先搭建好環(huán)境,MongoDB 的安裝也非常簡單!

        2.1、Windows 平臺

        如果你是 Windows 平臺,MongoDB 提供了可用于 32 位和 64 位系統(tǒng)的預(yù)編譯二進(jìn)制,安裝基本是傻瓜式的操作,登錄 MongoDB 官網(wǎng)并且下載安裝包,然后一步一步的操作即可!

        2.2、Linux 平臺

        生產(chǎn)環(huán)境基本都是 Linux 平臺,為了和生產(chǎn)保持一致,小編采用的服務(wù)器是CentOS7,安裝過程也比較簡單!

        • 創(chuàng)建資源文件
        sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo
        • 編輯內(nèi)容如下
        [mongodb-org-4.0]
        name=MongoDB Repository
        baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
        gpgcheck=1
        enabled=1
        gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
        • 運(yùn)行以下命令安裝 mongodb
        sudo yum install -y mongodb-org
        • 安裝完成之后,配置mongod.conf允許遠(yuǎn)程連接
        #編輯mongod.conf
        vim /etc/mongod.conf
        #將net:bindIp: 127.0.0.1 改為 0.0.0.0
        net:
           bindIp:0.0.0.0
        • 最后啟動服務(wù)
        #開啟服務(wù)
        systemctl start mongod

        #其他服務(wù)
        #關(guān)閉服務(wù)
        systemctl stop mongod

        #重啟服務(wù)
        systemctl restart mongod

        #開機(jī)自啟
        systemctl enable mongod

        至此,環(huán)境配置已經(jīng)完成!

        三、數(shù)據(jù)庫操作

        MongoDB 的數(shù)據(jù)操作,是開發(fā)人員接觸最頻繁的部分,第一次使用的時候,你會發(fā)現(xiàn)它和我們傳統(tǒng)使用的 sql 腳本命令完全不同,但是又類似,下面我們就一起來深入的了解下!

        3.1、進(jìn)入 MongoDB

        進(jìn)入 MongoDB 服務(wù)很簡單,輸入如下命令即可進(jìn)入!

        mongo

        例如,在CentOS里面輸入命令之后,進(jìn)入的服務(wù)界面如下:

        3.2、創(chuàng)建數(shù)據(jù)庫

        MongoDB 創(chuàng)建數(shù)據(jù)庫的語法格式如下:

        use DATABASE_NAME

        如果數(shù)據(jù)庫不存在,則創(chuàng)建數(shù)據(jù)庫,否則切換到指定數(shù)據(jù)庫。

        輸入如下命令,可以查詢數(shù)據(jù)庫列表

        #查詢數(shù)據(jù)庫列表
        show dbs

        #命令輸出結(jié)果:
        admin
        config
        local

        可以看到,當(dāng)前 MongoDB 有三個數(shù)據(jù)庫!

        輸入如下命令,可以切換到admin數(shù)據(jù)庫

        use admin

        輸入db命令,還可以查詢當(dāng)前數(shù)據(jù)庫

        db

        3.3、創(chuàng)建用戶

        默認(rèn)的情況下,是沒有用戶的,也無法操作數(shù)據(jù)庫,因此我們需要創(chuàng)建一個用戶,同時給他分配權(quán)限!

        3.3.1、創(chuàng)建一個管理員用戶

        創(chuàng)建一個用戶、密碼都是admin的用戶,同時給這個用戶分配userAdminAnyDatabase角色,指定的數(shù)據(jù)庫為admin!

        #創(chuàng)建一個admin用戶
        db.createUser(
        {
          user: "admin",
          pwd"admin",
          roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
        })

        其中字段含義如下:

        • user:用戶的名字;
        • pwd:用戶的密碼;
        • roles:指定用戶的角色,可以用一個空數(shù)組給新用戶設(shè)定空角色。
        • roles 中的 role:指定角色。
        • roles 中的 db:指定的數(shù)據(jù)庫,例如上面中的角色userAdminAnyDatabase,只在 admin 數(shù)據(jù)庫中可用。

        角色在 MongoDB 中,代表著某個用戶是否有權(quán)限訪問數(shù)據(jù)庫或者操作數(shù)據(jù)庫,理解這點(diǎn)非常重要!

        MongoDB 角色定義如下:

        角色類型名稱描述
        admin數(shù)據(jù)庫角色readAnyDatabase只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限
        admin數(shù)據(jù)庫角色readWriteAnyDatabase只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限
        admin數(shù)據(jù)庫角色userAdminAnyDatabase只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限
        admin數(shù)據(jù)庫角色dbAdminAnyDatabase只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限
        admin數(shù)據(jù)庫角色clusterAdmin只在admin數(shù)據(jù)庫中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限
        admin數(shù)據(jù)庫角色root只在admin數(shù)據(jù)庫中可用,超級賬號,超級權(quán)限
        數(shù)據(jù)庫管理角色dbAdmin允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問system.profile
        數(shù)據(jù)庫管理角色userAdmin允許用戶向system.users集合寫入,可以在指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶
        數(shù)據(jù)庫用戶角色read允許用戶讀取指定數(shù)據(jù)庫
        數(shù)據(jù)庫用戶角色readWrite允許用戶讀寫指定數(shù)據(jù)庫
        3.3.2、創(chuàng)建一個不受訪問限制的超級用戶

        如果你想創(chuàng)建一個不受訪問限制的超級用戶,賦予root角色即可!

        #創(chuàng)建超級用戶
        db.createUser(
            {
                user:"root",
                pwd:"root",
                roles:["root"]
            }
        )
        3.3.3、創(chuàng)建一個業(yè)務(wù)數(shù)據(jù)庫普通用戶

        如果你想創(chuàng)建一個業(yè)務(wù)數(shù)據(jù)庫普通用戶,例如只能訪問test_db數(shù)據(jù)庫,并且只負(fù)責(zé)數(shù)據(jù)的増查改刪。

        # 創(chuàng)建或者切換數(shù)據(jù)庫到test_db
        use test_db

        # 創(chuàng)建一個test用戶,并且只能訪問test_db,對表只有讀寫權(quán)限
        db.createUser(
        {
          user: "test",
          pwd"test",
          roles: [ { role: "readWrite", db: "test_db" } ]
        })
        3.3.4、驗(yàn)證用戶是否可以正常登錄

        對于剛剛創(chuàng)建的用戶,我們怎么驗(yàn)證它是否能正常登錄呢?命令也很簡單!

        db.auth("test","test")

        如果返回是1表示鑒權(quán)正常!

        3.3.5、查詢當(dāng)前數(shù)據(jù)庫用戶信息

        查詢創(chuàng)建的用戶,命令也很簡單!

        # 查看創(chuàng)建的用戶
        show users
        3.3.6、修改用戶密碼

        有些時候,我們會忘記密碼,可通過如下方式進(jìn)行修改!

        #修改用戶密碼
        db.changeUserPassword("username""xxxxx")
        3.3.7、刪除用戶

        如果某個用戶需要停用,可通過如下方式進(jìn)行刪除

        #切換指定數(shù)據(jù)庫
        use test_db

        #刪除用戶
        db.dropUser('test')
        3.3.8、刪除數(shù)據(jù)庫

        如果某個數(shù)據(jù)庫需要停用,可通過如下方式進(jìn)行刪除(只有超級管理員有權(quán)限刪除)

        #切換指定數(shù)據(jù)庫
        use test_db

        #刪除數(shù)據(jù)庫
        db.dropDatabase()

        3.4、創(chuàng)建集合

        MongoDB 并無這個概念,而對應(yīng)的定義叫:集合,我們在關(guān)系型數(shù)據(jù)庫中看到的表數(shù)據(jù),在 MongoDB 中被定義為:文檔,MongoDB 也被很多人成為文檔數(shù)據(jù)庫!

        在關(guān)系型數(shù)據(jù)庫中,表數(shù)據(jù)是一行一行的存儲,但是在 MongoDB 中,可能不是這樣,如果你存儲的 json 非常復(fù)雜,嵌套很深,那么在 MongoDB 中存儲的行數(shù),可能非常深,存儲的時候類似我們在頁面看到的父子表結(jié)構(gòu)!

        3.4.1、創(chuàng)建一個集合

        MongoDB 中使用 createCollection() 方法來創(chuàng)建集合。

        語法格式:

        db.createCollection(name, options)

        參數(shù)說明:

        • name: 要創(chuàng)建的集合名稱
        • options: 可選參數(shù), 指定有關(guān)內(nèi)存大小及索引的選項(xiàng)

        例如,在 test_db 數(shù)據(jù)庫中創(chuàng)建 tb_user 集合:

        # 切換到test_db數(shù)據(jù)庫
        use test_db

        # 創(chuàng)建 tb_user 集合
        db.createCollection("tb_user")

        #輸出結(jié)果
        "ok" : 1 }

        如果要查看已有的集合,可以使用show collections命令!

        show collections

        下面是帶有幾個關(guān)鍵參數(shù)的createCollection()的用法,下面命令表示:創(chuàng)建固定集合tb_user,整個集合空間大小6142800KB, 文檔最大個數(shù)為10000

        db.createCollection("tb_user", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )

        在 MongoDB 中,很多時候不需要手動創(chuàng)建集合。當(dāng)你插入一個文檔時,MongoDB 會自動創(chuàng)建集合!

        # 向集合tb_user 插入一條文檔數(shù)據(jù)
        db.tb_user.insert({"name" : "張三"})

        #查詢集合
        show collections

        # 輸出結(jié)果
        tb_user
        3.4.2、刪除一個集合

        MongoDB 中使用 drop() 方法來刪除集合。

        語法格式:

        db.collection.drop()

        例如,刪除在 test_db 數(shù)據(jù)庫中 tb_user 集合:

        # 切換到test_db數(shù)據(jù)庫
        use test_db

        # 創(chuàng)建 tb_user 集合
        db.tb_user.drop()

        #輸出結(jié)果
        true

        3.4、創(chuàng)建文檔

        創(chuàng)建文檔,類似我們在關(guān)系型數(shù)據(jù)庫中,將數(shù)據(jù)插入到數(shù)據(jù)庫,操作也很簡單!

        3.4.1、插入文檔

        MongoDB 使用 insert()save() 方法向集合中插入文檔。

        語法如下:

        db.COLLECTION_NAME.insert(document)

        db.COLLECTION_NAME.save(document)
        • save():如果_id主鍵存在則更新數(shù)據(jù),如果不存在就插入數(shù)據(jù)。
        • insert():若插入的數(shù)據(jù)主鍵已經(jīng)存在,則會拋異常,提示主鍵重復(fù),不保存當(dāng)前數(shù)據(jù)。

        例如,在test_db數(shù)據(jù)庫的tb_user集合中,插入一條數(shù)據(jù)

        db.tb_user.insert(
        {
            name:"張三",
            age:18,
            gender:"男",
            tags: ['宅男''技術(shù)控''脫發(fā)嚴(yán)重']
        })

        如果該集合不在該數(shù)據(jù)庫中, MongoDB 會自動創(chuàng)建該集合并插入文檔。

        查看已插入文檔,命令如下:

        #查詢tb_user集合中的數(shù)據(jù)
        db.tb_user.find()

        # 輸出結(jié)果
        "_id" : ObjectId("6022310f6b5e964b0a5916e6"), "name" : "張三""age" : 18, "gender" : "男""tags" : [ "宅男""技術(shù)控""脫發(fā)嚴(yán)重" ] }

        當(dāng)然,你還可以通過save()命令進(jìn)行插入,如果不指定_id字段 save() 方法類似于 insert() 方法。如果指定 _id 字段,則會更新該 _id 的數(shù)據(jù)。

        例如,將張三年齡更新到30歲!

        db.tb_user.save(
        {
            _id: ObjectId("6022310f6b5e964b0a5916e6"),
            name:"張三",
            age:30,
            gender:"男",
            tags: ['宅男''技術(shù)控''脫發(fā)嚴(yán)重']
        })

        查看文檔

        db.tb_user.find()

        # 輸出結(jié)果
        "_id" : ObjectId("6022310f6b5e964b0a5916e6"), "name" : "張三""age" : 30, "gender" : "男""tags" : [ "宅男""技術(shù)控""脫發(fā)嚴(yán)重" ] }
        3.4.2、更新文檔

        MongoDB 提供了 update()save() 方法來更新集合中的文檔。

        語法格式如下:

        db.collection.update(
           <query>,
           <update>,
           {
             upsert: <boolean>,
             multi: <boolean>,
             writeConcern: <document>
           }
        )
        • query : update的查詢條件,類似sql update查詢內(nèi)where后面的。
        • update : update的對象和一些更新的操作符(如inc...)等,也可以理解為sql update查詢內(nèi)set后面的
        • upsert : 可選,這個參數(shù)的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認(rèn)是false,不插入
        • multi : 可選,mongodb 默認(rèn)是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新。
        • writeConcern :可選,拋出異常的級別。

        例如,將張三年齡更新到22歲!

        db.tb_user.update({'name':'張三'},{$set:{'age':22}})

        查詢已更新的數(shù)據(jù)

        db.tb_user.find()

        # 輸出結(jié)果
        "_id" : ObjectId("602235216b5e964b0a5916e8"), "name" : "張三""age" : 22, "gender" : "男""tags" : [ "宅男""技術(shù)控""脫發(fā)嚴(yán)重" ] }

        以上語句只會修改第一條發(fā)現(xiàn)的文檔,如果你要修改多條相同的文檔,則需要設(shè)置multi參數(shù)為true。

        db.tb_user.update({'name':'張三'},{$set:{'age':22}},{multi:true})
        3.4.3、刪除文檔

        MongoDB 中的remove()函數(shù)是用來移除集合中的數(shù)據(jù)

        語法格式如下:

        db.collection.remove(
           <query>,
           {
             justOne: <boolean>,
             writeConcern: <document>
           }
        )
        • query :(可選)刪除的文檔的條件。
        • justOne : (可選)如果設(shè)為 true 或 1,則只刪除一個文檔,如果不設(shè)置該參數(shù),或使用默認(rèn)值 false,則刪除所有匹配條件的文檔。
        • writeConcern :(可選)拋出異常的級別。

        例如,刪除姓名為張三的用戶

        db.tb_user.remove({'name':'張三'})

        查詢數(shù)據(jù)是否被刪除

        db.col.find()

        #結(jié)果為空
        3.4.4、查詢文檔

        MongoDB 查詢文檔使用 find() 方法。

        語法格式如下:

        db.collection.find(query, projection)
        • query :可選,使用查詢操作符指定查詢條件
        • projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認(rèn)省略)。

        如果你需要以易讀的方式來讀取數(shù)據(jù),可以使用 pretty() 方法,語法格式如下:

        db.col.find().pretty()

        首先我們插入幾條數(shù)據(jù),插入結(jié)果如下:

        例如,查詢一個性別為的用戶信息

        #單個條件查詢,類似 sql語句中的 gender = '男'
        db.tb_user.find({"gender":"男"})

        查詢一個性別為,姓名為張三的用戶

        #多條件查詢,類似 sql語句中的 gender = '男' and name = '李四'
        db.tb_user.find({"gender":"男","name":"李四"})

        查詢一個性別為 或者 姓名為張三的用戶

        #多條件查詢,類似 sql語句中的 gender = '男' or name = '李四'
        db.tb_user.find({$or:[{"gender":"男"},{"name""李四"}]})

        查詢一個性別為 或者 姓名為張三,同時年齡大于30的用戶

        #多條件查詢,類似 sql語句中的 age > 30 and ( gender = '男' or name = '李四')
        db.tb_user.find({"age": {$gt:30}, $or:[{"gender":"男"},{"name""李四"}]})
        3.4.5、分頁查詢文檔

        如果需要分頁查詢集合數(shù)據(jù),可以使用limit()skip()函數(shù),其中limit()表示讀幾條數(shù)據(jù),skip()表示從第幾條數(shù)據(jù)開始。

        #從集合中的第三行數(shù)據(jù)開始,讀2條數(shù)據(jù)返回
        db.tb_user.find({}).limit(2).skip(3)
        3.4.6、文檔排序

        和關(guān)系型數(shù)據(jù)庫一樣,MongoDB 可以使用sort()方法進(jìn)行排序,通過參數(shù)指定排序的字段,并使用 1-1 來指定排序的方式,其中 1 為升序排列,而 -1 是用于降序排列。

        例如,查詢tb_user文檔,按照age進(jìn)行升序排序!

        db.tb_user.find({}).sort({"age":1})

        3.5、創(chuàng)建索引

        索引通常能夠極大的提高查詢的效率,如果沒有索引,MongoDB 在讀取數(shù)據(jù)時必須掃描集合中的每個文件并選取那些符合查詢條件的記錄。

        這種掃描全集合的查詢效率是非常低的,特別在處理大量的數(shù)據(jù)時,查詢可以要花費(fèi)幾十秒甚至幾分鐘,這對網(wǎng)站的性能是非常致命的。

        3.5.1、創(chuàng)建索引

        MongoDB 使用 createIndex() 方法來創(chuàng)建索引,語法格式如下:

        db.collection.createIndex(keys, options)

        語法中 Key 值為你要創(chuàng)建的索引字段,1 為指定按升序創(chuàng)建索引,如果你想按降序來創(chuàng)建索引指定為 -1 即可!

        例如,給tb_user文檔中的age創(chuàng)建一個索引!

        db.tb_user.createIndex({"age":1})

        創(chuàng)建索引是一個比較耗時的動作,我們還可以通過參數(shù)配置,在后臺創(chuàng)建索引。

        db.tb_user.createIndex({"age":1}, {background: true})

        通過在創(chuàng)建索引時加background:true的選項(xiàng),讓創(chuàng)建工作在后臺執(zhí)行!

        3.5.2、查看索引

        MongoDB 提供了getIndexes()方法,可以進(jìn)行查看索引。

        例如,查詢tb_user集合中的索引

        db.tb_user.getIndexes()
        3.5.3、刪除索引

        不在需要的索引,我們可以將其刪除。刪除索引時,可以刪除集合中的某一索引,可以刪除全部索引。

        語法格式:

        db.COLLECTION_NAME.dropIndex("INDEX-NAME")

        例如,刪除集合tb_user集合中的age索引:

        #查詢索引
        db.tb_user.getIndexes()

        #輸出結(jié)果
        [
            {
                "v" : 2,
                "key" : {
                    "_id" : 1
                },
                "name" : "_id_",
                "ns" : "test_db.tb_user"
            },
            {
                "v" : 2,
                "key" : {
                    "age" : 1
                },
                "name" : "age_1",
                "ns" : "test_db.tb_user"
            }
        ]

        刪除對應(yīng)的age_1索引!

        db.tb_user.dropIndex("age_1")

        四、客戶端

        對于任何一款數(shù)據(jù)庫,如果沒有可視化界面操作,在開發(fā)的時候,可以說極其不方便,下面推薦一款小編經(jīng)常使用的一款客戶端。

        • Robo 3T(免費(fèi)、輕量級) ,可以訪問官網(wǎng)獲取
        • Studio 3T(全面,收費(fèi)),訪問官網(wǎng)地址獲取

        其中小編采用的是第二款,整體的體驗(yàn)比Robo 3T要一點(diǎn),兩者功能都比較齊全!

        在使用的時候,可以根據(jù)個人喜愛進(jìn)行選擇!

        五、重要的一步

        網(wǎng)上發(fā)現(xiàn)很多 mongodb 被黑,使大家將目光投向了mongodb 的權(quán)限控制。

        其實(shí) mongodb 本身有一套完備的 RBAC 權(quán)限控制體系,這次被黑基本都是沒有遵照 mongodb 的生產(chǎn)環(huán)境部署手冊部署的結(jié)果。

        我們平時玩一玩 mongodb 習(xí)慣了不設(shè)置用戶名密碼,當(dāng)我們的數(shù)據(jù)庫放到公網(wǎng)時,由于我們也沒有設(shè)置用戶名密碼,任何人都可以隨便訪問,而且由于我們沒有開啟授權(quán)訪問,使得任何登錄到 mongodb 服務(wù)器的用戶都擁有最高權(quán)限!

        一些居心不良的人發(fā)現(xiàn),就可以把我們的數(shù)據(jù)拷走,刪除我們的數(shù)據(jù)庫,從而勒索贖金!

        再次提醒各位同學(xué),別學(xué)會所有的技能,大門還一直開著,還抱怨我方防御塔怎么一直被摧毀!

        以上文CentOS7安裝為例,修改/etc/mongod.conf,在security部分添加如下配置,開啟授權(quán)訪問!

        security:
            authorization: enabled

        修改完成之后,重啟 mongodb 服務(wù)

        #重啟服務(wù)
        systemctl restart mongod

        六、小結(jié)

        本文主要圍繞 MongoDB 的使用,從環(huán)境配置、數(shù)據(jù)庫使用,再到客戶端工具選用,做了簡單的介紹,可能有的地方總結(jié)的不到位,歡迎各位網(wǎng)友批評指出!

        在下篇文章中,我們會詳細(xì)的介紹SpringBootMongoDB的整合實(shí)踐!

        七、參考

        1、MongoDB 官方文檔

        2、菜鳥教程 - mongodb


        END


        關(guān)注 Stephen,一起學(xué)習(xí),一起成長。


        點(diǎn)“在看”支持下吧


        點(diǎn) 閱讀原文 可優(yōu)惠充值話費(fèi),流量,視頻會員等。

        瀏覽 38
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            成人免费无遮拦在线视频 | 亚洲视频中文 | 日本后进式猛烈xx00动态图 | 天天日小穴天天插小穴天天干小穴 | 国产一页 | 国产99久久久国产精品 | 天天干天天搞天天射 | 国产精品视频免费观看 | 久久久久国产免费观看 | 91成人 在线观看喷潮数学 |