MongoDB 4系列(1)概述與安裝和資源介紹

MongoDB 4 系列(1)概述與安裝

前言

  之前很早時候,因爲參加牛客的讀書筆記活動,曾做過一定筆記和小實驗,當時沒得很深入的研究。現在打算騰出手來,好好的學習一番。

  之前的筆記都是基於MongoDb的3.0x版本,比較老舊。目前來說,我打算用最近最新的MongoDB,版本是4.2.3。進行學習,目前工作中需要要用。

概述

  MongoDB 是一個基於分佈式文件存儲的文檔數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。

  MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。

  MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

·

主要特點

  • MongoDB 是一個面向文檔存儲的數據庫,操作起來比較簡單和容易。
  • 你可以在MongoDB記錄中設置任何屬性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)來實現更快的排序。
  • 你可以通過本地或者網絡創建數據鏡像,這使得MongoDB有更強的擴展性。
  • 如果負載的增加(需要更多的存儲空間和更強的處理能力) ,它可以分佈在計算機網絡中的其他節點上這就是所謂的分片。
  • Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  • MongoDb 使用update()命令可以實現替換完成的文檔(數據)或者一些指定的數據字段 。
  • Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操作。
  • Map和Reduce。Map函數調用emit(key,value)遍歷集合中所有的記錄,將key與value傳給Reduce函數進行處理。
  • Map函數和Reduce函數是使用Javascript編寫的,並可以通過db.runCommand或mapreduce命令來執行MapReduce操作。
  • GridFS是MongoDB中的一個內置功能,可以用於存放大量小文件。
  • MongoDB允許在服務端執行腳本,可以用Javascript編寫某個函數,直接在服務端執行,也可以把函數的定義存儲在服務端,下次直接調用即可。
  • MongoDB支持各種編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
  • MongoDB安裝簡單。

mongoDB的雲庫

  MongoDB現在挺友好,有永久免費的沙箱MongoDB雲使用,提供學習,有8G很不錯了。

  現在博文並不打算用該處教怎麼創建clusters,因爲很簡單。

  進行簡單的登錄和註冊後,就能看見自己的MongoDB雲上數據庫了。

在這裏插入圖片描述

MongoDB資源

  以下兩款GUI的MongoDB工具還不錯,當然也可以選其他的。本次博文將以Studio 3T爲主(因爲它還在免費試用期,而且的確好用)。

下載頁面

Studio 3T

  Studio 3T是適用於Windows,Mac和Linux的用於MongoDB的專業GUI和IDE。 無論使用者是否具有MongoDB查詢語言知識均可更快地瀏覽和管理數據,該工具可以用於構建查詢,數據瀏覽,聚合和數據比較,導入/導出,代碼生成等功能。

  安裝時,會讓你選擇哪一種你喜歡的界面,如下所示,我個人感覺哪一種都行,選擇第二種更適合擁有高級mongoDB查詢基礎的人員,目前學習來說,先以第一種爲主。

在這裏插入圖片描述

  最後的界面如下所示。

在這裏插入圖片描述

Robo 3T

  是Studio3T的免費版本,說強大也算強大,說不強大也不強大。

  相關學習使用地址,可以參考此處,以及此處


morphia

  morphia是現在大部分公司所用的進行mongoDB數據保存、查詢的工具,,現在MongoDB已經將其挪到社區進行維護,github的地址請點擊這裏。它能讓Java實體類到MongoDB文檔的映射,透明地將Java實體映射到MongoDB文檔並返回。

  mongoDB在maven官方倉庫,老式的在2017年1月最後更新到1.3.2。

<dependency>
    <groupId>org.mongodb.morphia</groupId>
    <artifactId>morphia</artifactId>
    <version>1.3.2</version>
</dependency>

  2018年底,MongoDB向社區貢獻了Morphia,以維護和發展該項目。以下是更新後的maven引入:

<dependency>
   <groupId>dev.morphia.morphia</groupId>
   <artifactId>core</artifactId>
   <version>1.4.1</version>
</dependency>

  移交到社區後,發展到博文現在,當前的版本已經到了2.0.0版本。

  1.4.0 的版本主要是包名和Maven座標名的改變,大致實現功能和1.3.2相同。到了1.5.x已經更改了許多,把Option類相關的引入的內容都標記爲棄用,以此簡化,還做了很多更改,是爲了2.0的過渡和未來的更新。

  2.0的目標是爲了精簡和簡單化,已經擁抱java 11及以上的版本,而且引入更流暢的API,更新了映射器等等。

  爲了學習所用,目前打算採用的座標名爲org.mongodb.morphia的項目,即1.3.2。

MongoDB Java Drivers

  與morphia一起使用的是mondoDB的java 驅動器,用以和MongoDB進行同步。github地址請點擊這裏

  本次學習,打算先試水3.12.1

  maven引用很簡單了,就如下所示,打算先用3.12.1:

<dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.12.1</version>
</dependency>

Windows安裝mongoDB

  本次安裝的版本是MongoDB 4.2.3 社區版,下載地址

  然後雙擊運行即可,建議用自定義。

在這裏插入圖片描述

在這裏插入圖片描述

  接下來都用默認值即可。

  然後去到安裝目錄下的bin目錄,雙擊mongo.exe。

在這裏插入圖片描述

  可以試着輸入下面的命令測試:

use tutorial

  可以看見輸出如下所示:

在這裏插入圖片描述

  接下來插入一條數據試試。

db.users.insert({username:"yuyuntan"})

在這裏插入圖片描述

Studio3T連接mongoDB

  使用Studio3T進行連接,點擊測試連接即可,因爲是默認的,我這個測試連接是通過的。

在這裏插入圖片描述

在這裏插入圖片描述

  然後就可以看見如下所示:
在這裏插入圖片描述

  剛剛創建的數據都存在了。

連接altas雲庫

  好了,再來回顧一下,altas。

  當你創建你的altas集羣后,我們要怎麼連接,下面教了。

  先點擊CONNECT按鈕。

在這裏插入圖片描述

  這裏點擊後會彈出頁面框。

  這個地方是加入你當前IP地址入白名單,個人認爲爲了簡單化,就加0.0.0.0。

在這裏插入圖片描述

在這裏插入圖片描述

  接着創建用戶名和密碼。
在這裏插入圖片描述

  接下來就通知你創建成功了用戶,接下來選擇連接的方式。

在這裏插入圖片描述

  接下來先選第一個

在這裏插入圖片描述
在這裏插入圖片描述

  看見中間讓你複製的了麼,先把你現在打開的mongoDB的exe先關閉。

  然後還在bin目錄下,輸入那個可複製的命令。

mongo "mongodb+srv://cluster0-cgkii.mongodb.net/test"  --username yuyuntan

在這裏插入圖片描述

在這裏插入圖片描述

  然後輸入密碼就可以了,如果密碼不正確是打不開的。

在這裏插入圖片描述

  接着回到頁面,就可以看見連接數。

在這裏插入圖片描述

  接着,如果我要Studio3T也連接上去,再繼續點擊CONNECT按鈕。

  選擇中間的這個。
在這裏插入圖片描述

  接着選擇語言,我選java,3.6及以上。

在這裏插入圖片描述

  複製後得到:

mongodb+srv://yuyuntan:<password>@cluster0-cgkii.mongodb.net/test?retryWrites=true&w=majority

  用自己的密碼替換中間 <password>

  隱私問題,打碼了密碼。

在這裏插入圖片描述

在這裏插入圖片描述

  然後對下面紅線的進行鼠標雙擊。

在這裏插入圖片描述

在這裏插入圖片描述

  就看見了。

java 代碼連接altas雲庫

  首先要引入兩個pom文件。

  這裏引入的分別是這兩個:

       <dependency>
            <groupId>org.mongodb.morphia</groupId>
            <artifactId>morphia</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.12.1</version>
        </dependency>

  連接的代碼如下所示:

 MongoClientOptions.Builder builder = MongoClientOptions.builder()
                // 設置最大連接數
                .connectionsPerHost(10)
                // 連接超時時間
                .connectTimeout(10_000)
                // 設置socket連接超時時間
                .socketTimeout(20_000)
                // 設置是否啓用遊標
                .cursorFinalizerEnabled(true)
                // 描述副本集的讀取行爲
                .readPreference(ReadPreference.primary());
        // 創建mongo client 連接的uri資源
        MongoClientURI uri = new MongoClientURI(connectUrl,builder);
        MongoClient mongoClient = new MongoClient(uri);
        // 讀取的數據庫名
        String databaseName = "tutorial";
        // use tutorial
        MongoDatabase db = mongoClient.getDatabase(databaseName);
        // db.getCollection("users")
        MongoCollection<Document> users = db.getCollection("users");
        // db.getCollection("users").find()
        MongoCursor cursor =  users.find().cursor();
        while (cursor.hasNext()){
            System.out.println(cursor.next());
        }

  其中connectUrl就是

mongodb+srv://yuyuntan:<password>@cluster0-cgkii.mongodb.net/test?retryWrites=true&w=majority

  用自己的密碼替換中間 <password>

  最後輸出結果如下所示:
在這裏插入圖片描述

總結

  mongoDB本篇主要是列舉一些使用工具和如何使用這些資源,並且會進行代碼的示例描述。不一定盡善盡美,希望能對看者也幫助。

參考文獻

[1] MongoDB window安裝官方文檔

[2] MongoDB菜鳥教程

[3] atlas官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章