分佈式文件存儲數據庫 MongoDB

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/88/88c902e77a46c54c6e3bd9eaa6601ab5.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"MongoDB 簡介"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  Mongo 並非芒果(Mango)的意思,而是源於 Humongous(巨大的;龐大的)一詞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  MongoDB 是一個基於分佈式文件存儲的 NoSQL 數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。關於什麼是 NoSQL 可閱讀《"},{"type":"link","attrs":{"href":"https://xie.infoq.cn/article/7c38d45cbe323451fe10089f7","title":""},"content":[{"type":"text","text":"學了那麼多 NoSQL 數據庫 NoSQL 究竟是啥"}]},{"type":"text","text":"》"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  MongoDB 是一個介於關係型數據庫和非關係型數據庫之間的產品,是非關係型數據庫當中功能最豐富,最像關係數據庫的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ba/bad4dffcc72f3ae57b39c1e9a9bed13b.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/7d/7dab8c0d5211d13138a14256520aa925.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  MongoDB 使用 BSON(Binary JSON)對象來存儲,與 JSON 格式的鍵值對(key/value)類似,字段值可以包含其他文檔,數組及文檔數組。支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係型數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"MongoDB 歷史"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  2007 年,Dwight Merriman,Eliot Horowitz 和 Kevin Ryan 成立 10gen 軟件公司,在成立之初,這家的公司目標是進軍雲計算行業,爲企業提供雲計算服務。在開發雲計算產品時,他們準備開發一個類似於數據庫的組件,爲雲計算產品提供存儲服務。當時是關係型數據庫一統天下的時間,他們覺得傳統的關係型數據庫無法滿足他們的要求,他們想要一款程序員不懂SQL語言也可以使用的數據存儲產品。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  在網絡上找了一圈,不管是開源的還是閉源的產品,都沒找到讓他們滿意的東西,既然找不到,那就自己開發吧,反正他們也有那個技術實力,10gen 的創始人都來自谷歌,他們創建的網絡廣告公司 DoubleClick 被谷歌收購了,這是他們的第二次創業。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  10gen 公司不使用關係型數據庫是有一定原因的,當時他們還在 DoubleClick 公司的時候,就喫過關係型數據庫的苦頭。DoubleClick 是一家網絡廣告公司,服務美國衆多的知名公司,該公司每秒提供 40 萬個廣告,但在可伸縮性和敏捷性方面經常遇到困難,因此他們不得不經常自己開發和使用許多自定義數據存儲來解決現有關係型數據庫的不足,這讓他們很是苦惱。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  因此他們決定開發一款數據庫產品解決他們在 DoubleClick 時遇到的問題,併爲自己的雲計算產品提供存儲服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"MongoDB 最初於 2007 年開發,由位於紐約的一個名爲 "},{"type":"codeinline","content":[{"type":"text","text":"10gen"}]},{"type":"text","text":" 的組織開發,現在被稱爲 "},{"type":"codeinline","content":[{"type":"text","text":"MongoDB Inc."}]}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2009 年,經過將近 2 年的開發,10gen 開發出了 MongoDB 的雛形並將它開源以及正式命名爲 MongoDB,同時成立開源社區,通過社區運營 MongoDB。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2009 年 02 月 MongoDB 1.0 發佈,提供了大部分基本的查詢功能。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2009 年 12 月 MongoDB 1.2 發佈,引入了 map-reduce,支持大規模數據處理。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"MongoDB 的第一個真正產品是從 2010 年 03 月發佈的 MongoDB 1.4 版本開始的。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2010 年 8 月 MongoDB 1.6 發佈,引入了一些主要特性,比如用於水平伸縮的分片、具備自動故障轉移能力的副本集以及對 IPv6 的支持。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2012 年 05 月 23 日,MongoDB 2.1 發佈。該版本採用全新架構,包含諸多增強。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2012 年 06 月 06 日,MongoDB 2.0.6 發佈,分佈式文檔數據庫。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2012 年 8 月 MongoDB 2.2 發佈,引入了聚合管道,可以將多個數據處理步驟組合成一個操作鏈。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2013 年 MongoDB 推出第一款商業版本 MongoDB Enterprise Advanced。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2013 年 04 月 23 日,MongoDB 2.4.3 發佈,此版本包括了一些性能優化,功能增強以及 bug 修復。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2013 年 08 月 20 日,MongoDB 2.4.6 發佈,仍然是以性能優化,功能增強和 bug 修復爲主。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2015 年 03 月 MongoDB 3.0 發佈,包含了新的 WiredTiger 存儲引擎、可插拔存儲引擎 API、增加了 50 個副本集限制和安全改進。同年晚些時候又發佈了 3.2 版本,支持文檔驗證、部分索引和一些主要的聚合增強。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2016 年 MongoDB 推出了 Atlas 服務,MongoDB Atlas,與公有云服務廠商(谷歌、微軟Azure)合作。這一年,MongoDB 爆出了非常嚴重的安全門事件,黑客通過 MongoDB 的默認監聽地址 0.0.0.0 刪除數據,並且通過此漏洞進行勒索,支付 0.2 到 0.5 的比特幣就可以恢復數據。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2017 年 10 月 MongoDB 公司成立 10 週年之際,順利通過 IPO 在紐交所上市。開盤 24 美元,公司估值達到 16 億美元,並獲得 1.92 美元的籌資。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2017 年 11 月 MongoDB 3.6 發佈,爲多集合連接查詢、變更流和使用 JSON 模式進行文檔驗證提供了更好的支持。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2018 年 06 月 MongoDB 4.0 發佈,這一版本的發佈獲得了廣泛的關注,提供了跨文檔事務處理能力。這是一個重要的里程碑,MongoDB 已經爲高數據完整性需求做好了準備。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2019 年 03 月 18 日,Forrester 授予 MongoDB NoSQL 領導者稱號。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2019 年 10 月 MongoDB 4.2 發佈,開始支持分佈式事務。"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"截至 2020 年 10 月,MongoDB 的社區版版本是 4.4.1,擴展性和性能增強,降低複製延遲,可用性和容錯性增強,查詢能力和易用性增強,MongoDB 雲平臺的功能更新。MongoDB 逐漸的從一個專注於數據庫服務的廠商,轉變爲提供數據平臺服務的廠商。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  截至 2020 年,MongoDB 的全球下載量達到了 1.1 億次。MongoDB 公司目前有 2000 多名員工,有超過 18000 名付費客戶,其中有很多客戶同時使用 MongoDB Atlas 和 MongoDB 企業版。大多數大公司在內部的一些場景中仍然使用的是社區版。MongoDB 社區版仍然是開源的,除了一些關鍵特性外,它與 MongoDB 企業版差不多。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"MongoDB 支持語言"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/53/533133dd67a82981b819a4daefdfad07.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"MongoDB 與關係型數據庫術語對比"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/bb/bbd00915f97bcbb32c113844818e95b3.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/82/8277a62f519f1595707b853e838d8107.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"MongoDB 數據類型"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/26/2619c14f2c3055c56ca0b986a31cfee9.png","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"MongoDB 下載與安裝"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"下載"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  官網:https://www.mongodb.com/"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  下載地址:https://www.mongodb.com/try/download/community"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  在頁面中選擇 "},{"type":"codeinline","content":[{"type":"text","text":"MongoDB Community Server"}]},{"type":"text","text":" 社區版,根據自己的系統選擇對應的版本,我自己使用的是 "},{"type":"codeinline","content":[{"type":"text","text":"CentOS"}]},{"type":"text","text":" 版本。而 MongoDB 只有 "},{"type":"codeinline","content":[{"type":"text","text":"RedHat"}]},{"type":"text","text":" 版本,下載使用即可。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  CentOS 是 Community ENTerprise Operating System 的簡稱,也可以叫它社區企業操作系統,是 Linux 操作系統中的一個發行版本。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":">"}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  CentOS 並不是全新的 Linux 發行版,它是 Red Hat 家族發行的企業版的產品 Red Hat Enterprise Linux(以下稱之爲 RHEL)的克隆版本。RHEL 是很多企業採用的 Linux 發行版本,需要向 Red Hat 付費纔可以使用,並能得到付費對應的服務,技術支持和版本升級。CentOS 可以像 RHEL 一樣的構築 Linux 系統環境,但不需要向 Red Hat 支付任何的產品和服務費用,同時也得不到任何有償技術支持和升級服務。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/de/de615118f218779f13d124acec742de1.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  還可以通過:https://docs.mongodb.com/manual/installation/ 確認該版本軟件是否支持你的操作系統。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/08/08425c212b2ff8fa9910c7da95ceaef1.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"安裝"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  將資源上傳至服務器 "},{"type":"codeinline","content":[{"type":"text","text":"/usr/local/src"}]},{"type":"text","text":",解壓至 "},{"type":"codeinline","content":[{"type":"text","text":"/usr/local"}]},{"type":"text","text":" 並重命名爲 "},{"type":"codeinline","content":[{"type":"text","text":"mongodb"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 創建 mongodb 目錄\nmkdir -p /usr/local/mongodb\n# 解壓 mongodb 至指定目錄\ntar -zxvf /usr/local/src/mongodb-linux-x86_64-rhel70-4.4.1.tgz -C /usr/local/\n# 重命名解壓目錄爲 mongodb\nmv /usr/local/mongodb-linux-x86_64-rhel70-4.4.1/ /usr/local/mongodb"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"創建數據/日誌目錄"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  創建用於存放數據和日誌的文件夾,並修改其權限增加讀寫權限。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 創建存放數據的目錄\nmkdir -p /usr/local/mongodb/data/db\n# 創建存放日誌的目錄\nmkdir -p /usr/local/mongodb/logs\n# 創建日誌記錄文件\ntouch /usr/local/mongodb/logs/mongodb.log"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"啓動 MongoDB"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"前臺啓動"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  MongoDB 的默認啓動方式爲前臺啓動。所謂的前臺啓動就是 MongoDB 啓動進程後會佔用當前的終端窗口。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 切換至指定目錄\ncd /usr/local/mongodb/\n# 前臺啓動\nbin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"--dbpath"}]},{"type":"text","text":":指定數據文件存放目錄"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"--logpath"}]},{"type":"text","text":":指定日誌文件,注意是指定文件不是目錄"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"--logappend"}]},{"type":"text","text":":使用追加的方式記錄日誌"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"--port"}]},{"type":"text","text":":指定端口,默認爲 27017"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"--bind_ip"}]},{"type":"text","text":":綁定服務 IP,若綁定 127.0.0.1,則只能本機訪問,默認爲本機地址"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"後臺啓動"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  所謂的後臺啓動就是以守護進程的方式啓動 MongoDB。命令中添加 "},{"type":"codeinline","content":[{"type":"text","text":"--fork"}]},{"type":"text","text":" 即可。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 後臺啓動\nbin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  通過命令啓動的方式並不適合管理,畢竟每次輸入命令都需要考慮各參數的配置。我們可以通過配置文件來配置啓動參數,然後通過指定配置文件的方式啓動服務,這樣在管理 MongoDB 上就比較方便了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"配置文件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  在 "},{"type":"codeinline","content":[{"type":"text","text":"bin"}]},{"type":"text","text":" 目錄下增加一個 "},{"type":"codeinline","content":[{"type":"text","text":"mongodb.conf"}]},{"type":"text","text":" 配置文件。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"conf"},"content":[{"type":"text","text":"# 數據文件存放目錄\ndbpath = /usr/local/mongodb/data/db\n# 日誌文件存放目錄\nlogpath = /usr/local/mongodb/logs/mongodb.log\n# 以追加的方式記錄日誌\nlogappend = true\n# 端口默認爲 27017\nport = 27017\n# 對訪問 IP 地址不做限制,默認爲本機地址\nbind_ip = 0.0.0.0\n# 以守護進程的方式啓用,即在後臺運行\nfork = true"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"啓動"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 切換至指定目錄\ncd /usr/local/mongodb/\n# 指定配置文件的方式啓動服務\nbin/mongod -f bin/mongodb.conf"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"客戶端訪問"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  可以通過 "},{"type":"codeinline","content":[{"type":"text","text":"bin"}]},{"type":"text","text":" 目錄中的 "},{"type":"codeinline","content":[{"type":"text","text":"mongo"}]},{"type":"text","text":" 來訪問 "},{"type":"codeinline","content":[{"type":"text","text":"MongoDB"}]},{"type":"text","text":" 服務器。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  命令爲:"},{"type":"codeinline","content":[{"type":"text","text":"bin/mongo --host 連接的主機地址(默認127.0.0.1) --port 端口(默認27017)"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"[root@localhost mongodb]# bin/mongo\nMongoDB shell version v4.4.1\nconnecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb\nImplicit session: session { \"id\" : UUID(\"2bf54fad-83bc-444c-8bee-166a224445b8\") }\nMongoDB server version: 4.4.1\n---\nThe server generated these startup warnings when booting: \n 2020-10-21T10:47:44.855+08:00: ***** SERVER RESTARTED *****\n 2020-10-21T10:47:47.024+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted\n 2020-10-21T10:47:47.024+08:00: You are running this process as the root user, which is not recommended\n 2020-10-21T10:47:47.024+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'\n 2020-10-21T10:47:47.024+08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'\n 2020-10-21T10:47:47.024+08:00: Soft rlimits too low\n 2020-10-21T10:47:47.024+08:00: currentValue: 1024\n 2020-10-21T10:47:47.024+08:00: recommendedMinimum: 64000\n---\n---\n Enable MongoDB's free cloud-based monitoring service, which will then receive and display\n metrics about your deployment (disk utilization, CPU, operation statistics, etc).\n\n The monitoring data will be available on a MongoDB website with a unique URL accessible to you\n and anyone you share the URL with. MongoDB may use this information to make product\n improvements and to suggest MongoDB products and deployment options to you.\n\n To enable free monitoring, run the following command: db.enableFreeMonitoring()\n To permanently disable this reminder, run the following command: db.disableFreeMonitoring()\n---\n> "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "},{"type":"codeinline","content":[{"type":"text","text":"help"}]},{"type":"text","text":" 幫助命令。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"> help\n\tdb.help() help on db methods\n\tdb.mycoll.help() help on collection methods\n\tsh.help() sharding helpers\n\trs.help() replica set helpers\n\thelp admin administrative help\n\thelp connect connecting to a db help\n\thelp keys key shortcuts\n\thelp misc misc things to know\n\thelp mr mapreduce\n\n\tshow dbs show database names\n\tshow collections show collections in current database\n\tshow users show users in current database\n\tshow profile show most recent system.profile entries with time >= 1ms\n\tshow logs show the accessible logger names\n\tshow log [name] prints out the last segment of log in memory, 'global' is default\n\tuse set current database\n\tdb.mycoll.find() list objects in collection mycoll\n\tdb.mycoll.find( { a : 1 } ) list objects in mycoll where a == 1\n\tit result of the last line evaluated; use to further iterate\n\tDBQuery.shellBatchSize = x set default number of items to display on shell\n\texit quit the mongo shell"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "},{"type":"codeinline","content":[{"type":"text","text":"db.version()"}]},{"type":"text","text":" 查看版本信息。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"> db.version()\n4.4.1"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "},{"type":"codeinline","content":[{"type":"text","text":"show dbs"}]},{"type":"text","text":" 查看所有數據庫。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"> show dbs\nadmin 0.000GB\nconfig 0.000GB\nlocal 0.000GB"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  這裏先簡單通過客戶端進行訪問測試,後面會詳細羅列客戶端操作 MongoDB 數據庫、集合、文檔、索引、內置函數等相關的操作。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"關閉 MongoDB"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"前臺啓動關閉"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  使用 "},{"type":"codeinline","content":[{"type":"text","text":"Ctrl + c"}]},{"type":"text","text":" 即可關閉。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"後臺啓動關閉"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  使用 "},{"type":"codeinline","content":[{"type":"text","text":"--shutdown"}]},{"type":"text","text":" 參數即可關閉。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 命令啓動方式的關閉\nbin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork --shutdown\n# 配置文件啓動方式的關閉\nbin/mongod -f bin/mongodb.conf --shutdown"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"kill 命令關閉"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  通過 "},{"type":"codeinline","content":[{"type":"text","text":"kill -9"}]},{"type":"text","text":" 的方式強制關閉進程,一般這種方式都不怎麼推薦使用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 查看 mongodb 運行的進程信息\nps -ef | grep mongodb\n# kill -9 強制關閉\nkill -9 pid"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/88/88d55b405feda4706d291b97ef7a88db.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"MongoDB 函數關閉"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  連接到 MongoDB 服務後,切換到 admin 數據庫,並使用相關函數關閉服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 連接 mongodb\nbin/mongo\n# 切換 admin 數據庫\nuse admin\n# 執行以下函數(2選1)即可關閉服務\ndb.shutdownServer()\ndb.runCommand(“shutdown”)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"環境變量"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  每次操作 MongoDB 都需要進入具體的目錄纔行,比如啓動服務,客戶端進行連接等,可不可以在任意目錄都能進行操作。答案當然是可以的,只需要將 MongoDB 相關目錄添加至系統環境變量即可。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  先通過 "},{"type":"codeinline","content":[{"type":"text","text":"vim /etc/profile"}]},{"type":"text","text":" 編輯系統環境變量文件,添加以下內容。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# 添加環境變量\nexport MONGODB_HOME=/usr/local/mongodb\nexport PATH=$PATH:$MONGODB_HOME/bin"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  然後通過 "},{"type":"codeinline","content":[{"type":"text","text":"source /etc/profile"}]},{"type":"text","text":" 重新加載系統環境變量。這樣在系統任意目錄下都可以直接操作 MongoDB 了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/42/4250e7491f128f2cfca33f2a94d06d69.png","alt":null,"title":" ","style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"  本文講解了 MongoDB 的一些入門級內容,教會了大家如何基於 Linux 環境下載與安裝 MongoDB。下文我們先從安全問題入手,看看 MongoDB 未加密導致的慘痛經歷與教訓,順便再教大家一波實用的解決方案。"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/40/40a0536d60b522105e4d02d5c32267b5.gif","alt":null,"title":"","style":[{"key":"width","value":"50%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文采用 "},{"type":"link","attrs":{"href":"https://mrhelloworld.com/categories/mongodb","title":""},"content":[{"type":"text","text":"知識共享「署名-非商業性使用-禁止演繹 4.0 國際」許可協議"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大家可以通過 "},{"type":"link","attrs":{"href":"https://mrhelloworld.com/categories/mongodb","title":""},"content":[{"type":"text","text":"分類"}]},{"type":"text","text":" 查看更多關於 "},{"type":"link","attrs":{"href":"https://mrhelloworld.com/categories/mongodb","title":""},"content":[{"type":"text","text":"MongoDB"}]},{"type":"text","text":" 的文章。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":""}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"🤗 您的"},{"type":"codeinline","content":[{"type":"text","text":"點贊"}]},{"type":"text","text":"和"},{"type":"codeinline","content":[{"type":"text","text":"轉發"}]},{"type":"text","text":"是對我最大的支持。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"📢 掃碼關注 "},{"type":"codeinline","content":[{"type":"text","text":"哈嘍沃德先生"}]},{"type":"text","text":"「文檔 + 視頻」每篇文章都配有專門視頻講解,學習更輕鬆噢 ~"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/32/327cf2675396b27f9cc53db87015455e.gif","alt":null,"title":"","style":[{"key":"width","value":"50%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/11/111de83ae8a99b305c41565a8d01e024.jpeg","alt":null,"title":"","style":[{"key":"width","value":"100%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章