<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MongoDB 入門,我是花了心思的

          共 4160字,需瀏覽 9分鐘

           ·

          2020-09-10 15:32


          有時(shí)候不得不感慨一下,系統(tǒng)升級(jí)真的是好處多多,不僅讓我有機(jī)會(huì)重構(gòu)了之前的爛代碼,也滿足了我積極好學(xué)的虛榮心。你看,Redis 入門了、Elasticsearch 入門了,這次又要入門 MongoDB,感覺自己變禿的同時(shí),也變強(qiáng)大了。

          小伙伴們?cè)诶^續(xù)閱讀之前,我必須要聲明一點(diǎn),我對(duì) MongoDB 并沒有進(jìn)行很深入的研究,僅僅是因?yàn)橐茫蛯W(xué)一下。但作為一名負(fù)責(zé)任的技術(shù)博主,我是花了心思的,這篇入門教程,小伙伴們讀完后絕對(duì)會(huì)感到滿意,忍不住點(diǎn)贊。

          當(dāng)然了,小伙伴們遇到文章中有錯(cuò)誤的地方,不要手下留情,可以組團(tuán)過來捶我,但要保證一點(diǎn),不要打臉,我怕毀容。

          01、MongoDB 是什么

          MongoDB 是一個(gè)基于分布式的文件存儲(chǔ)數(shù)據(jù)庫,旨在為 Web 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

          以上引用來自于官方,不得不說,解釋得文縐縐的。那就讓我來換一種通俗的說法給小伙伴們解釋一下,MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔(類似于 JSON 對(duì)象),數(shù)據(jù)結(jié)構(gòu)由鍵值對(duì)組成,類似于 Java 中的 Map,通過 key 的方式訪問起來效率就高得多,對(duì)吧?這也是 MongoDB 最重要的特點(diǎn)。

          MongoDB 提供了企業(yè)版(功能更強(qiáng)大)和社區(qū)版,對(duì)于我們開發(fā)者來說,拿社區(qū)版來學(xué)習(xí)和使用就足夠了。MongoDB 的驅(qū)動(dòng)包很多,常見的編程語言都有覆蓋到,比如說 Java、JavaScript、C++、C#、Python 等等。

          很多知名的互聯(lián)網(wǎng)公司都在用 MongoDB,比如說谷歌、Facebook、eBay 等等??傊档眯刨?,小伙伴們放心入門,技多不壓身啊,就當(dāng)是給自己一次學(xué)習(xí)的機(jī)會(huì)。

          02、安裝 MongoDB

          MongoDB 針對(duì)不同的操作系統(tǒng)有不同的安裝包,我們這篇入門的文章就以 Windows 為例吧。

          官網(wǎng)下載地址如下:

          https://www.mongodb.com/download-center/community

          最新的版本是 4.2.6,我選擇的是安裝版,msi 格式的,264M 左右。下載完就可以雙擊運(yùn)行安裝,傻瓜式的。

          建議選擇「Custom」自定義安裝,如下圖所示。

          以服務(wù)模式運(yùn)行,并配置好數(shù)據(jù)和日志目錄,如下圖所示。

          建議取消勾選安裝 MongoDB 的圖形化客戶端工具,否則安裝速度慢到你想要去扣會(huì)手機(jī)。

          安裝完成后進(jìn)入到 bin 目錄下,雙擊 mongo.exe 文件就可以連接到 MongoDB 服務(wù)了。

          1)MongoDB 的默認(rèn)端口號(hào)為 27017。

          2)MongoDB 的版本號(hào)為 4.2.6。

          默認(rèn)會(huì)連接到 test 文檔(相當(dāng)于數(shù)據(jù)),可以通過 db 命令查詢。

          還可以運(yùn)行一些簡單的算術(shù)運(yùn)算:

          那如何停止服務(wù)呢?可以直接點(diǎn)擊右上角的 X 號(hào)——粗暴、壁咚。

          03、安裝 Robo 3T

          Robo 3T 提供了對(duì) MongoDB 和 SCRAM-SHA-256(升級(jí)的 mongo shell)的支持,是一款輕量級(jí)的 MongoDB 客戶端工具。

          下載地址如下:

          https://robomongo.org/download

          最新的版本是 1.3,選擇 zip 格式進(jìn)行下載,23M 左右。下載完成后,解壓就行了。

          包目錄不再一一解釋了,進(jìn)入 bin 目錄下,雙擊運(yùn)行 robo3t.exe 文件,啟動(dòng) Robo 3T 客戶端。

          點(diǎn)擊「Create」創(chuàng)建一個(gè) MongoDB 的連接。

          連接成功后,就可以操作 MongoDB 了。

          (不過,小伙伴們這時(shí)候也不太知道該怎么操作,畢竟 MongoDB 的一些相關(guān)概念還不清楚,無從下手?。?/p>

          04、MongoDB 的相關(guān)概念

          隨著互聯(lián)網(wǎng)的極速發(fā)展,用戶數(shù)據(jù)也越來越龐大,NoSQL 數(shù)據(jù)庫的發(fā)展能夠很好地處理這些大的數(shù)據(jù),MongoDB 是 NoSQL 數(shù)據(jù)庫中的一個(gè)典型的代表。

          說到這,可能有些小伙伴們還不知道 NoSQL 是啥意思,我簡單解釋一下。NoSQL 可不是沒有 SQL 的意思,它實(shí)際的含義是 Not Only SQL,也就是“不僅僅是 SQL”,指的是非關(guān)系型數(shù)據(jù)庫,和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫 MySQL、Oracle 不同。

          MongoDB 命名源于英文單詞 humongous,意思是「巨大無比」,可以看得出 MongoDB 的野心。MongoDB 的數(shù)據(jù)以類似于 JSON 格式的二進(jìn)制文檔存儲(chǔ):

          {
          ????name:?"沉默王二",
          ????age:?18,
          ????hobbies:?["寫作",?"敲代碼"]
          }

          在進(jìn)行下一步之前,需要先來理解 MongoDB 中的幾個(gè)關(guān)鍵概念,比如說什么是集合,什么是文檔,什么是字段等等。MongoDB 雖然是非關(guān)系型數(shù)據(jù)庫,但和關(guān)系型數(shù)據(jù)庫非常相似。

          看完上面這幅圖(圖片來源于好朋友 macrozheng 的文章),是不是瞬間就清晰了?

          05、在 Java 中使用 MongoDB

          有些小伙伴可能會(huì)問,“二哥,我是一名 Java 程序員,我該如何在 Java 中使用 MongoDB 呢?”這個(gè)問題問得好,這就來,這就來。

          第一步,在項(xiàng)目中添加 MongoDB 驅(qū)動(dòng)依賴:

          <dependency>
          ????<groupId>org.mongodbgroupId>
          ????<artifactId>mongodb-driver-syncartifactId>
          ????<version>4.0.3version>
          dependency>

          第二步,新建測試類 MongoDBTest:

          public?class?MongoDBTest?{
          ????public?static?void?main(String[]?args)?{
          ????????MongoClient?mongoClient?=?MongoClients.create();
          ????????MongoDatabase?database?=?mongoClient.getDatabase("mydb");
          ????????MongoCollection?collection?=?database.getCollection("test");

          ????????Document?doc?=?new?Document("name",?"沉默王二")
          ????????????????.append("age",?"18")
          ????????????????.append("hobbies",?Arrays.asList("寫作",?"敲代碼"));
          ????????collection.insertOne(doc);

          ????????System.out.println("集合大小:"?+collection.countDocuments());

          ????????Document?myDoc?=?collection.find().first();
          ????????System.out.println("文檔內(nèi)容:"?+?myDoc.toJson());
          ????}
          }

          1)MongoClient 為 MongoDB 提供的客戶端連接對(duì)象,不指定主機(jī)名和端口號(hào)的話,默認(rèn)就是“l(fā)ocalhost”和“27017”。

          如果小伙伴想自定義主機(jī)名和端口號(hào)的話,也可以通過字符串的形式:

          MongoClient?mongoClient?=?MongoClients.create("mongodb://localhost:27017");

          是不是感覺和 MySQL 的連接字符串挺像的?

          2)getDatabase()?方法用于獲取指定名稱的數(shù)據(jù)庫,如果數(shù)據(jù)庫已經(jīng)存在,則直接返回該 DB 對(duì)象(MongoDatabase),否則就創(chuàng)建一個(gè)再返回(省去了判空的操作,非常人性化)。

          3)getCollection()?方法用于獲取指定名稱的文檔對(duì)象,如果文檔已經(jīng)存在,則直接返回該 Document 的集合對(duì)象,否則就創(chuàng)建一個(gè)再返回(和?getDatabase()?方法類似)。

          有了文檔對(duì)象(MongoCollection)后,就可以往里面添加具體的文檔內(nèi)容了。

          ?Document?doc?=?new?Document("name",?"沉默王二")
          ????????????????.append("age",?"18")
          ????????????????.append("hobbies",?Arrays.asList("寫作",?"敲代碼"));

          Document 對(duì)象來源于 org.bson 包下,可以在實(shí)例化該對(duì)象之后通過?append()?方法添加對(duì)應(yīng)的鍵值對(duì),非常方便,就像 String 類的?append()?方法一樣。

          有了文檔對(duì)象后,就可以通過?insertOne()?方法將文檔添加到集合當(dāng)中了。

          4)countDocuments()?方法用于獲取集合中的文檔數(shù)目。

          5)要查詢文檔,可以通過?find()?方法,它返回一個(gè)?FindIterable?對(duì)象,first()?方法可以返回當(dāng)前集合中的第一個(gè)文檔對(duì)象。

          好了,來看一下程序的輸出結(jié)果:

          集合大小:1
          文檔內(nèi)容:{"_id":?{"$oid":?"5ebcaa76465cab3f18b93e1a"},?"name":?"沉默王二",?"age":?"18",?"hobbies":?["寫作",?"敲代碼"]}

          完全符合我們的預(yù)期,perfect!

          也可以通過 Robo 3T 查看“mydb”數(shù)據(jù)庫,結(jié)果如下圖所示。

          06、鳴謝

          好了,我親愛的小伙伴們,以上就是本文的全部內(nèi)容了,是不是看完后很想實(shí)操一把 MongoDB,趕快行動(dòng)吧!如果你在學(xué)習(xí)的過程中遇到了問題,歡迎隨時(shí)和我交流,雖然我也是個(gè)菜鳥,但我有熱情啊。

          另外,如果小伙伴想寫入門級(jí)別的文章,這篇就是最好的范例。



          重磅!IT圈技術(shù)交流已成立



          公眾號(hào)運(yùn)營至今,離不開小伙伴們的支持。
          為了給小伙伴們提供一個(gè)互相交流的技術(shù)平臺(tái),特地開通了程序員交流群。
          群里有不少技術(shù)大神,不時(shí)會(huì)分享一些技術(shù)要點(diǎn),更有一些資源收藏愛好者不時(shí)分享一些優(yōu)質(zhì)的學(xué)習(xí)資料。(免費(fèi),不賣課!)

          需要進(jìn)群的朋友,可長按掃描下方二維碼。


          ▲長按掃碼

          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蒙古一级黄片 | 一级特黄妇女高潮AA片免费播放 | 亚洲无码中文字幕在线观看 | 91久久精品日日躁欧美 | 中文无码熟妇人妻 |