由於 MongoDB 沒入門,我丟了一份實習工做

有時候不得不感慨一下,系統升級真的是好處多多,不只讓我有機會重構了以前的爛代碼,也知足了我積極好學的虛榮心。你看,Redis 入門了、Elasticsearch 入門了,此次又要入門 MongoDB,感受本身變禿的同時,也變強大了。java

小夥伴們在繼續閱讀以前,我必需要聲明一點,我對 MongoDB 並無進行很深刻的研究,僅僅是由於要用,就學一下。但做爲一名負責任的技術博主,我是花了心思的,這篇入門教程,小夥伴們讀完後絕對會感到滿意,忍不住點贊。git

固然了,小夥伴們遇到文章中有錯誤的地方,不要手下留情,能夠組團過來捶我,但要保證一點,不要打臉,我怕毀容。程序員

0一、MongoDB 是什麼

MongoDB 是一個基於分佈式的文件存儲數據庫,旨在爲 Web 應用提供可擴展的高性能數據存儲解決方案。github

以上引用來自於官方,不得不說,解釋得文縐縐的。那就讓我來換一種通俗的說法給小夥伴們解釋一下,MongoDB 將數據存儲爲一個文檔(相似於 JSON 對象),數據結構由鍵值對組成,相似於 Java 中的 Map,經過 key 的方式訪問起來效率就高得多,對吧?這也是 MongoDB 最重要的特色。面試

MongoDB 提供了企業版(功能更強大)和社區版,對於咱們開發者來講,拿社區版來學習和使用就足夠了。MongoDB 的驅動包不少,常見的編程語言都有覆蓋到,好比說 Java、JavaScript、C++、C#、Python 等等。mongodb

不少知名的互聯網公司都在用 MongoDB,好比說谷歌、Facebook、eBay 等等。總之,值得信賴,小夥伴們放心入門,技多不壓身啊,就當是給本身一次學習的機會。shell

0二、安裝 MongoDB

MongoDB 針對不一樣的操做系統有不一樣的安裝包,咱們這篇入門的文章就以 Windows 爲例吧。數據庫

官網下載地址以下:編程

www.mongodb.com/download-ce…bash

最新的版本是 4.2.6,我選擇的是安裝版,msi 格式的,264M 左右。下載完就能夠雙擊運行安裝,傻瓜式的。

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

以服務模式運行,並配置好數據和日誌目錄,以下圖所示。

建議取消勾選安裝 MongoDB 的圖形化客戶端工具,不然安裝速度慢到你想要去扣會手機。

安裝完成後進入到 bin 目錄下,雙擊 mongo.exe 文件就能夠鏈接到 MongoDB 服務了。

1)MongoDB 的默認端口號爲 27017。

2)MongoDB 的版本號爲 4.2.6。

默認會鏈接到 test 文檔(至關於數據),能夠經過 db 命令查詢。

還能夠運行一些簡單的算術運算:

那如何中止服務呢?能夠直接點擊右上角的 X 號——粗暴、壁咚。

0三、安裝 Robo 3T

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

下載地址以下:

robomongo.org/download

最新的版本是 1.3,選擇 zip 格式進行下載,23M 左右。下載完成後,解壓就好了。

包目錄再也不一一解釋了,進入 bin 目錄下,雙擊運行 robo3t.exe 文件,啓動 Robo 3T 客戶端。

點擊「Create」建立一個 MongoDB 的鏈接。

鏈接成功後,就能夠操做 MongoDB 了。

(不過,小夥伴們這時候也不太知道該怎麼操做,畢竟 MongoDB 的一些相關概念還不清楚,無從下手啊)

0四、MongoDB 的相關概念

隨着互聯網的極速發展,用戶數據也愈來愈龐大,NoSQL 數據庫的發展可以很好地處理這些大的數據,MongoDB 是 NoSQL 數據庫中的一個典型的表明。

說到這,可能有些小夥伴們還不知道 NoSQL 是啥意思,我簡單解釋一下。NoSQL 可不是沒有 SQL 的意思,它實際的含義是 Not Only SQL,也就是「不只僅是 SQL」,指的是非關係型數據庫,和傳統的關係型數據庫 MySQL、Oracle 不一樣。

MongoDB 命名源於英文單詞 humongous,意思是「巨大無比」,能夠看得出 MongoDB 的野心。MongoDB 的數據以相似於 JSON 格式的二進制文檔存儲:

{
    name: "沉默王二",
    age: 18,
    hobbies: ["寫做", "敲代碼"]
}
複製代碼

在進行下一步以前,須要先來理解 MongoDB 中的幾個關鍵概念,好比說什麼是集合,什麼是文檔,什麼是字段等等。MongoDB 雖然是非關係型數據庫,但和關係型數據庫很是類似。

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

0五、在 Java 中使用 MongoDB

有些小夥伴可能會問,「二哥,我是一名 Java 程序員,我該如何在 Java 中使用 MongoDB 呢?」這個問題問得好,這就來,這就來。

第一步,在項目中添加 MongoDB 驅動依賴:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.0.3</version>
</dependency>
複製代碼

第二步,新建測試類 MongoDBTest:

public class MongoDBTest {
    public static void main(String[] args) {
        MongoClient mongoClient = MongoClients.create();
        MongoDatabase database = mongoClient.getDatabase("mydb");
        MongoCollection<Document> 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("文檔內容:" + myDoc.toJson());
    }
}
複製代碼

1)MongoClient 爲 MongoDB 提供的客戶端鏈接對象,不指定主機名和端口號的話,默認就是「localhost」和「27017」。

若是小夥伴想自定義主機名和端口號的話,也能夠經過字符串的形式:

MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
複製代碼

是否是感受和 MySQL 的鏈接字符串挺像的?

2)getDatabase() 方法用於獲取指定名稱的數據庫,若是數據庫已經存在,則直接返回該 DB 對象(MongoDatabase),不然就建立一個再返回(省去了判空的操做,很是人性化)。

3)getCollection() 方法用於獲取指定名稱的文檔對象,若是文檔已經存在,則直接返回該 Document 的集合對象,不然就建立一個再返回(和 getDatabase() 方法相似)。

有了文檔對象(MongoCollection)後,就能夠往裏面添加具體的文檔內容了。

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

Document 對象來源於 org.bson 包下,能夠在實例化該對象以後經過 append() 方法添加對應的鍵值對,很是方便,就像 String 類的 append() 方法同樣。

有了文檔對象後,就能夠經過 insertOne() 方法將文檔添加到集合當中了。

4)countDocuments() 方法用於獲取集合中的文檔數目。

5)要查詢文檔,能夠經過 find() 方法,它返回一個 FindIterable 對象,first() 方法能夠返回當前集合中的第一個文檔對象。

好了,來看一下程序的輸出結果:

集合大小:1
文檔內容:{"_id": {"$oid": "5ebcaa76465cab3f18b93e1a"}, "name": "沉默王二", "age": "18", "hobbies": ["寫做", "敲代碼"]}
複製代碼

徹底符合咱們的預期,perfect!

也能夠經過 Robo 3T 查看「mydb」數據庫,結果以下圖所示。

0六、鳴謝

好了,我親愛的小夥伴們,以上就是本文的所有內容了,是否是看完後很想實操一把 MongoDB,趕快行動吧!若是你在學習的過程當中遇到了問題,歡迎隨時和我交流,雖然我也是個菜鳥,但我有熱情啊。

另外,若是你想寫入門級別的文章,這篇就是最好的範例。

我是沉默王二,一枚有趣的程序員。若是以爲文章對你有點幫助,請微信搜索「 沉默王二 」第一時間閱讀,回覆【666】更有我爲你精心準備的 500G 高清教學視頻(已分門別類)。

本文 GitHub 已經收錄,有大廠面試完整考點,歡迎 Star。

原創不易,莫要白票,請你爲本文點個贊吧,這將是我寫做更多優質文章的最強動力。

相關文章
相關標籤/搜索