有時候不得不感慨一下,系統升級真的是好處多多,不僅讓我有機會重構了之前的爛程式碼,也滿足了我積極好學的虛榮心。你看,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。
原創不易,莫要白票,請你為本文點個贊吧,這將是我寫作更多優質文章的最強動力。