云享專家韋世東:開發者如何學好 MongoDB

      網友投稿 723 2025-04-04

      作為一名研發,數據庫是或多或少都會接觸到的技術。 MongoDB 是當前火熱的 NoSQL 之一,我們怎樣才能學好 MongoDB 呢?本篇文章,我們將從以下幾方面討論這個話題:

      MongoDB 是什么

      我如何確定我需要學習 MongoDB

      開發者應該掌握 MongoDB 的哪些知識

      學習的選擇和困境

      我們先來了解一下,MongoDB 為何物。

      NoSQL 泛指非關系型數據庫,該詞是關系型數據庫(即 SQL)的相對稱呼。MongoDB 是非關系型數據庫(NoSQL)中較為人熟知的一種。

      它擁有很多優秀特性,例如高性能、高可用、支持豐富的查詢語句、無需預定義數據模型和水平可伸縮等,適合存儲結構化、半結構化的文檔和特定格式的文檔,這些特性使它受到眾多開發者的青睞。

      我們通過幾個例子來看看 MySQL 與 MongoDB 的差異。

      與 MySQL 數據庫不同的是,MongoDB 不需要預先定義表和字段,這正是它靈活性的體現。MongoDB 可以擁有多個數據庫,每個數據庫可以擁有多個集合,每個集合可以存儲多份文檔,這種關系與 SQL 數據庫中的“數據庫、表、數據”相當。下圖描述了 MongoDB 中數據庫、集合和文檔的關系:

      數據庫 fotoo 中有兩個集合,它們分別是 player 和 books。每個集合中都包含了許多文檔,例如集合 books 中關于書籍《紅樓夢》的文檔,集合 player 中關于球員 James 的文檔。

      在查詢方面,一個簡單的 MySQL 查詢語句為 SELECT * FROM tablename,對應的 MongoDB 查詢語句為 db.tablename.find()。在面對多步驟的查詢條件時,MongoDB 更游刃有余。例如:

      “統計數據庫 artic 中 score 大于 70 且小于 90 的文檔數量”

      這樣的需求,用 MongoDB 的聚合操作就可以輕松完成,對應示例如下:

      >?db.artic.aggregate([?...?{$match:?{score:?{$gt:?70,?$lt:?90}}},?...?{$group:?{_id:?null,?number:?{$sum:?1}}}?...?])?復制代碼

      這個例子或許簡單了些,在 MySQL 中我們可以用 count 和 where 完成,但如果復雜度再提高四五個等級呢?例如在此基礎上增加對某個字段的運算、替換、排序、分組計數、增刪字段,用 MySQL 來實現就會很頭疼,而 MongoDB 的聚合可以讓我們輕松地完成這類復雜需求。

      我如何確定我需要學習 MongoDB

      MongoDB 是近些年涌現的幾十種 NoSQL 中第一梯隊的成員,另外一個為人熟知的是 Redis。

      你可能會有”我如何確定我需要學習 MongoDB 呢?“ 這樣的疑問,面對這個問題,我們可以通過 MongoDB 的特點和應用場景著手:

      MongoDB 適合存儲結構確定或不確定的文檔。例如爬蟲爬取的信息常缺失字段的情況或字段參差不齊的情況;

      對數據庫可用性要求較高的情況。MySQL 這類數據庫要做到負載均衡、自動容災和數據同步需要借助外部工具,而 MongoDB 的復制集可以讓我們輕松完成這一系列的工作。相對接借助第三方工具來說,復制集的穩定性更高。

      分庫分表是 WEB 開發中常用到的數據庫優化手段,MySQL 的分庫分表要考慮的問題非常多,例如字段冗余、數據組裝跨節點分頁、排序和數據遷移等,而 MongoDB 的分片可以讓我們輕松完成“分庫分表”的工作。MongoDB 的分片機制使我們不必將心思放在由“分庫分表”帶來的問題,而是專注于具體需求。

      同樣的,MySQL 的權限控制、定義數據模型、數據庫備份和恢復等功能在 MongoDB 上也有。

      MongoDB 中支持地理位置的存儲和查詢,這意味著 MongoDB 可以用于共享單車、共享雨傘、汽車定位等業務中。

      我們常用的關系型數據庫無法滿足 WEB2.0 時代的需求,在實際應用中暴露了很多難以克服的問題。NoSQL 的產生就是為了解決例如海量數據的存儲、彈性可伸縮和靈活性等方面的挑戰,所以作為一名合格的開發者,應該抽空學習 SQL 以外的數據庫知識。

      開發者應該掌握 MongoDB 的哪些知識

      學習前,我們需要明白自身定位:專業 DBA 或者日常開發使用。

      MongoDB 有完善的體系和對應的認證考試,對于希望成為專業 DBA 的朋友我建議到 MongoDB 官方網站了解。

      而對于僅需要滿足日常開發需求的朋友,我建議學習的內容如下:

      MongoDB 在各個平臺的安裝方法

      MongoDB 數據庫和集合的基本操作

      MongoDB 文檔 CRUD 操作,包括能夠豐富 CRUD 的投影和修飾符等

      MongoDB 流式聚合操作,這能夠在數據庫層面輕松完成復雜數據的處理,而不是用編程語言來處理

      MongoDB 的數據模型,雖然 MongoDB 可以存儲不規則的文檔,但有些情況下定義數據模型可以提高查詢效率

      下圖描述了一種聚合操作的完整過程:

      當然,除了這些基本操作之外我們還可以學習更多的知識提高個人競爭力,這些知識是:

      MongoDB 執行計劃和索引,執行計劃可以讓我們清楚的了解到查詢語句的效率,而索引則是優化查詢效率的常用手段

      MongoDB 的復制集,這是提高 MongoDB 可用性,保證數據服務不停機的最佳手段

      MongoDB 的分片,分片能夠在數據量變得龐大之后保證效率

      MongoDB 的事物,如果你將 MongoDB 用于 WEB 網站,那么事物是你必須學習的知識

      MongoDB 數據庫備份和還原,有了復制集后,備份就顯得不是那么重要了,但并不是沒有這個需求。而且 MongoDB 的備份可以精細到文檔,這就非常有意義了。

      學習的選擇和困境

      有一定工作經驗的開發者,大多數情況下都會選擇自學。有些在網上搜索對應的文章,有些則直接翻閱官方文檔。

      我推薦的方式是翻閱官方文檔,在遇到難以理解的觀點時通過搜索引擎查找網友分享的文章。

      自學的優點很多,缺點也很明顯。例如:

      斷斷續續的學習,難以保持專注導致知識吸收不好

      耗費時間很長,雖然知道應該學習哪些方面的知識,但文檔并不是按你所想而規劃的,所以翻閱文檔要費很多功夫

      知識不成體系,東看看西看看,沒有歸納容易忘記

      學習就需要記筆記,這又是一件很費時間的事情

      官方文檔有些觀點難以理解,卡在半路很難受

      零星學了一兩個月,也不確定學會了沒有,內心毫無把握

      如果不自學,就得找一些成體系的教程來幫助自己快速進步,少走彎路。知識付費時代,在條件允許的情況下適當地投入也是很好的選擇。

      但面對動輒幾百的費用,不少開發者還是感覺略有壓力,畢竟我們搬磚的經濟壓力也非常大。 考慮到這些問題,這里推薦韋世東的文章 《超高性價比的 MongoDB 零基礎快速入門實戰教程》,它售價不到 10 塊錢。

      這篇文章的內容幾乎囊括了上面我們提到的所有知識點,看完這篇僅 5 萬詞的文章,你將收獲:

      文檔的 CRUD 操作和 Cursor 對象

      掌握流式聚合操作,輕松面對任何數據處理需求

      了解 MongoDB 的查詢效率和優化

      如何提高 MongoDB 的可用性

      如何應對數據服務故障

      理解 MongoDB 的訪問控制

      云享專家韋世東:開發者如何學好 MongoDB

      學會用數據模型降低數據冗余,提高效率

      掌握 mongodump 數據備份與還原方法

      這樣就可以勝任日常開發中對數據庫操作能力的要求了。這篇文章適合對 MongoDB 感興趣的零基礎開發者或者有一定基礎,想要繼續鞏固和加深學習的開發者。

      文章篇幅很長,內容詳盡,不乏優質配圖,例如描述復制集節點關系的圖:

      描述節主點掉線,重新選舉主節點的圖

      專家 開發者 MongoDB

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel表格如何按照姓氏排序
      下一篇:最全Excel三角函數公式,可直接套用!
      相關文章
      亚洲精品人成网在线播放影院| 亚洲成av人片一区二区三区| 亚洲国产成人久久一区久久| 亚洲精品乱码久久久久蜜桃| 亚洲精品人成网在线播放影院| 亚洲免费福利视频| 亚洲特级aaaaaa毛片| 亚洲精品视频在线播放| 亚洲第一精品电影网| 亚洲国产精品乱码在线观看97| 亚洲精品国产专区91在线| 91亚洲国产在人线播放午夜| 亚洲人成在线电影| 亚洲天天在线日亚洲洲精| 久久精品a亚洲国产v高清不卡| 亚洲综合一区二区精品导航| 久久久久亚洲AV成人片| 亚洲精品国产电影午夜| 亚洲电影免费观看| 亚洲fuli在线观看| 亚洲色大网站WWW永久网站| 亚洲精品V天堂中文字幕| 337P日本欧洲亚洲大胆艺术图| 日韩在线视精品在亚洲| 亚洲AV日韩精品一区二区三区| 亚洲毛片不卡av在线播放一区| 国产偷国产偷亚洲清高动态图| 亚洲人成中文字幕在线观看 | 国产亚洲精品资源在线26u| 国产成A人亚洲精V品无码性色| 亚洲成a人片在线观看日本| 久久精品国产亚洲综合色| 亚洲精品自产拍在线观看动漫| 亚洲美女视频网站| 色婷五月综激情亚洲综合| 亚洲乱码无人区卡1卡2卡3| 亚洲成av人片在线观看天堂无码 | 亚洲日本乱码一区二区在线二产线 | 日韩亚洲人成网站| 国产福利电影一区二区三区,亚洲国模精品一区 | 亚洲国产精品成人精品无码区在线|