有時候不得不感慨一下,系統升級真的是好處多多,不僅讓我有機會重構了之前的爛代碼,也滿足了我積極好學的虛榮心,你看,Redis 入門了、Elasticsearch 入門了,這次又要入門 MongoDB,感覺自己變禿的同時,也變強大了,

小伙伴們在繼續閱讀之前,我必須要宣告一點,我對 MongoDB 并沒有進行很深入的研究,僅僅是因為要用,就學一下,但作為一名負責任的技術博主,我是花了心思的,這篇入門教程,小伙伴們讀完后絕對會感到滿意,忍不住點贊,
當然了,小伙伴們遇到文章中有錯誤的地方,不要手下留情,可以組團過來捶我,但要保證一點,不要打臉,我怕毀容,
01、MongoDB 是什么
MongoDB 是一個基于分布式的檔案存盤資料庫,旨在為 Web 應用提供可擴展的高性能資料存盤解決方案,
以上參考來自于官方,不得不說,解釋得文縐縐的,那就讓我來換一種通俗的說法給小伙伴們解釋一下,MongoDB 將資料存盤為一個檔案(類似于 JSON 物件),資料結構由鍵值對組成,類似于 Java 中的 Map,通過 key 的方式訪問起來效率就高得多,對吧?這也是 MongoDB 最重要的特點,
MongoDB 提供了企業版(功能更強大)和社區版,對于我們開發者來說,拿社區版來學習和使用就足夠了,MongoDB 的驅動包很多,常見的編程語言都有覆寫到,比如說 Java、JavaScript、C++、C#、Python 等等,
很多知名的互聯網公司都在用 MongoDB,比如說谷歌、Facebook、eBay 等等,總之,值得信賴,小伙伴們放心入門,技多不壓身啊,就當是給自己一次學習的機會,
02、安裝 MongoDB
MongoDB 針對不同的作業系統有不同的安裝包,我們這篇入門的文章就以 Windows 為例吧,

官網下載地址如下:
https://www.mongodb.com/download-center/community
最新的版本是 4.2.6,我選擇的是安裝版,msi 格式的,264M 左右,下載完就可以雙擊運行安裝,傻瓜式的,
建議選擇「Custom」自定義安裝,如下圖所示,

以服務模式運行,并配置好資料和日志目錄,如下圖所示,

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

安裝完成后進入到 bin 目錄下,雙擊 mongo.exe 檔案就可以連接到 MongoDB 服務了,

1)MongoDB 的默認埠號為 27017,
2)MongoDB 的版本號為 4.2.6,
默認會連接到 test 檔案(相當于資料),可以通過 db 命令查詢,

還可以運行一些簡單的算術運算:

那如何停止服務呢?可以直接點擊右上角的 X 號——粗暴、壁咚,
03、安裝 Robo 3T
Robo 3T 提供了對 MongoDB 和 SCRAM-SHA-256(升級的 mongo shell)的支持,是一款輕量級的 MongoDB 客戶端工具,
下載地址如下:
https://robomongo.org/download
最新的版本是 1.3,選擇 zip 格式進行下載,23M 左右,下載完成后,解壓就行了,

包目錄不再一一解釋了,進入 bin 目錄下,雙擊運行 robo3t.exe 檔案,啟動 Robo 3T 客戶端,

點擊「Create」創建一個 MongoDB 的連接,

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

(不過,小伙伴們這時候也不太知道該怎么操作,畢竟 MongoDB 的一些相關概念還不清楚,無從下手啊)
04、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 的文章),是不是瞬間就清晰了?
05、在 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”資料庫,結果如下圖所示,

06、鳴謝
好了,我親愛的小伙伴們,以上就是本文的全部內容了,是不是看完后很想實操一把 MongoDB,趕快行動吧!如果你在學習的程序中遇到了問題,歡迎隨時和我交流,雖然我也是個菜鳥,但我有熱情啊,
另外,如果你想寫入門級別的文章,這篇就是最好的范例,
我是沉默王二,一枚有趣的程式員,如果覺得文章對你有點幫助,請微信搜索「 沉默王二 」第一時間閱讀,回復【666】更有我為你精心準備的 500G 高清教學視頻(已分門別類),
本文 GitHub 已經收錄,有大廠面試完整考點,歡迎 Star,
原創不易,莫要白票,請你為本文點個贊吧,這將是我寫作更多優質文章的最強動力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/169898.html
標籤:Java
上一篇:DDD之4聚合和聚合根
