1. 程式人生 > >孤荷淩寒自學python第五十六天通過compass客戶端和mongodb shell 命令來連接遠端MongoDb數據庫

孤荷淩寒自學python第五十六天通過compass客戶端和mongodb shell 命令來連接遠端MongoDb數據庫

用戶 共享 moni git name 學習者 primary monitor 地址

孤荷淩寒自學python第五十六天通過compass客戶端和mongodb shell 命令來連接遠端MongoDb數據庫

(完整學習過程屏幕記錄視頻地址在文末)

今天是學習mongoDB數據庫的第二天。仍然感覺付出的時間與收獲完全不成正比,萬事開頭的時候,總是那麽困難,不過今天歷盡困難總算還是成功在本地連接上了遠端的mongoDB數據庫(就是我註冊的官方的試用版本的數據庫,就在官方網站服務器上。)

一、首先在官方網站為我註冊的賬號新建的項目【Clusters0】中添加了一個測試數據庫(database),命名空間為:ghlhfirst
(具體添加過程不是很復雜,但要通過文字描述又比較有難度,而且最開始要找到這個添加過程還著實花了我不少時間,具體看我的操作錄屏,鏈接在文末)
同樣的,我可以很方便的在這個數據庫中,添加一個集合,我命名為【ghlhone】
與firebase一樣在集合中,我可以添加多個文檔(document)對象。在文檔中我也可以添加記錄,一個文檔的記錄可以由多個字典樣式的key:value格式組合的成的內容。這些都與之前學習的firebase數據庫一模一樣。
但今天沒有研究在文檔(document)中是否還可以添加下一層級的集合。
(具體看我的操作錄屏,鏈接在文末)

二、然後是下載安裝compass本地客戶端
下載後的compass本地客戶端的文件名是:
mongodb-compass-community-1.16.3-win32-x64.exe
直接點擊安裝,允許殺毒軟件放行即可安裝完成,桌面上會有快捷方式,而且安裝過程非常快,可能只花了幾秒鐘時間,然而下載這個文件要花不少時間,受制於網絡的影響。

客戶端的使用我找到了幾個網絡上的教程:
一個是官方教程:
https://resources.mongodb.com/getting-started-with-mongodb/getting-started-with-python-and-mongodb
一個是百度經驗上有同修者放有經驗:
https://jingyan.baidu.com/article/f96699bb0bb760894f3c1b63.html

我嚴格參照此教程進行連接,反復嘗試。
然而,卻屢屢失敗,反復提示:
Cannot reach any nodes for set Cluster0-shard-0. Please check network connectivity and the status of the set.

對compass起始界面上的參數也進行了反復的修改,不斷嘗試,花了近幾個小時,然而還是不能連接上。
(我的詳細操作過程,參見我的屏幕錄屏,因為反復嘗試次數過多,進行了剪輯,顯得沒有嘗試幾次,事實上進行了數百次的嘗試。)

就暫時放棄了,轉而研究它的命令行客戶端【Mongo Shell】
這種通過windows的命令行客戶端連接遠程服務器的方法。

三、又嘗試進行命令行客戶端【Mongo Shell】的安裝並連接
(一)、首先下載了這個客戶端,下載得到的文件是:
mongodb-shell-win32-x86_64-2008plus-ssl-4.0.4.zip
因為是zip格式的壓縮文件,看來不用安裝 ,於是我解壓了它,只得到了一個文件:
mongo.exe
此處與上面提到的百度經驗中的經驗文章中的教程都不再一致了,我只好進行嘗試,將這個文件放到了系統盤的windows目錄中,然而打開windows的命令行窗口進行驗證安裝是否成功:
輸入的命令是:
C:\Users\pw>mongo --version
MongoDB shell version v4.0.4
git version: f288a3bdf201007f3693c58e140056adf8b04839
allocator: tcmalloc
modules: none
build environment:
distmod: 2008plus-ssl
distarch: x86_64
target_arch: x86_64


根據顯示的內容來看,居然可以成功執行,當然此處也有可能是我之前已經安裝了compass客戶端,所以本來就已經安裝了了shell版本的客戶端。

(二)然後我找到了我的shell版本的連接字符命令行命令:
mongo "mongodb+srv://cluster0-zr7xj.mongodb.net/test" --username ghlh

考慮到我自己建立的第一個數據庫的命名空間是:【ghlhfirst】
於是我將其修改為再到windows的cmd命令中去執行如下:
mongo "mongodb+srv://cluster0-zr7xj.mongodb.net/ghlhfirst" --username ghlh
不料出現與compass客戶端同樣的問題:
Cannot reach any nodes for set Cluster0-shard-0. Please check network connectivity and the status of the set.
在此又花了大量時間,終於後來明白了,是網絡訪問受阻,經過反復測試,花去大量寶貴的時間之後,終於在shell命令下連接上了:
C:\Users\pw>mongo "mongodb+srv://cluster0-zr7xj.mongodb.net/ghlhfirst" --username ghlh
MongoDB shell version v4.0.4
Enter password:
connecting to: mongodb+srv://cluster0-zr7xj.mongodb.net/ghlhfirst
2019-01-01T17:38:59.961+0800 I NETWORK [js] Starting new replica set monitor for Cluster0-shard-0/cluster0-shard-00-00-zr7xj.mongodb.net.:27017,cluster0-shard-00-01-zr7xj.mongodb.net.:27017,cluster0-shard-00-02-zr7xj.mongodb.net.:27017
2019-01-01T17:39:01.002+0800 I NETWORK [js] Successfully connected to cluster0-shard-00-00-zr7xj.mongodb.net.:27017 (1 connections now open to cluster0-shard-00-00-zr7xj.mongodb.net.:27017 with a 5 second timeout)
2019-01-01T17:39:01.034+0800 I NETWORK [ReplicaSetMonitor-TaskExecutor] Successfully connected to cluster0-shard-00-01-zr7xj.mongodb.net.:27017 (1 connections now open to cluster0-shard-00-01-zr7xj.mongodb.net.:27017 with a 5 second timeout)
2019-01-01T17:39:01.243+0800 I NETWORK [js] changing hosts to Cluster0-shard-0/cluster0-shard-00-00-zr7xj.mongodb.net:27017,cluster0-shard-00-01-zr7xj.mongodb.net:27017,cluster0-shard-00-02-zr7xj.mongodb.net:27017 from Cluster0-shard-0/cluster0-shard-00-00-zr7xj.mongodb.net.:27017,cluster0-shard-00-01-zr7xj.mongodb.net.:27017,cluster0-shard-00-02-zr7xj.mongodb.net.:27017
2019-01-01T17:39:02.266+0800 I NETWORK [js] Successfully connected to cluster0-shard-00-00-zr7xj.mongodb.net:27017 (1 connections now open to cluster0-shard-00-00-zr7xj.mongodb.net:27017 with a 5 second timeout)
Implicit session: session { "id" : UUID("54f31aff-fe89-4189-b68e-c637916bd71b") }
MongoDB server version: 4.0.4
Error while trying to show server startup warnings: user is not allowed to do action [getLog] on [admin.]
MongoDB Enterprise Cluster0-shard-0:PRIMARY>
然後證實通過compass客戶端也可以連接上了。

三、對mongoDB連接命令的理解:
(一)
"mongodb+srv://cluster0-zr7xj.mongodb.net/ghlhfirst"
命令參數的第一部分其實是自己的數據庫的地址,個規模一個域名的形式。
(二)
--username ghlh
表示:當前連接數據庫的授權用戶名

而授權用戶對應的密碼,會在cmd命令窗口中,單獨提示輸入。
輸入密碼是不會有任何字符顯示的,只管輸入完成後點擊【Enter】即可。

由於今天花費了太多時間與服務器訪問上,還沒有進行Python語句連接到mongoDB的測試。

——————————
今天整理的學習筆記完成,最後例行說明下我的自學思路:
根據過去多年我自學各種編程語言的經歷,認為只有真正體驗式,解決實際問題式的學習才會有真正的效果,即讓學習實際發生。在2004年的時候我開始在一個鄉村小學自學電腦 並學習vb6編程語言,沒有學習同伴,也沒有高師在上,甚至電腦都是孤島(鄉村那時還沒有網絡),有的只是一本舊書,在痛苦的自學摸索中,我找到適應自己零基礎的學習方法:首先是每讀書的一小節就作相應的手寫筆記,第二步就是上機測試每一個筆記內容是否實現,其中會發現書中講的其實有出入或錯誤,第三步就是在上機測試之後,將筆記改為電子版,形成最終的修訂好的正確無誤的學習筆記 。
通過反復嘗試錯誤,在那個沒有分享與交流的黑暗時期我摸黑學會了VB6,爾後接觸了其它語言,也曾聽過付費視頻課程,結果發現也許自己學歷果然太低,就算是零基礎的入門課程,其實也難以跟上進度,講師的教學多數出現對初學者的實際情況並不了解的情況,況且學習者的個體也存在差異呢?當然更可怕的是收費課程的價格往往是自己難以承受的。
於是我的所有編程學習都改為了自學,繼續自己的三步學習筆記法的學習之路。
當然自學的最大問題是會走那麽多的彎路,沒有導師直接輸入式的教學來得直接,好在網絡給我們帶來無限搜索的機會,大家在網絡上的學習日誌帶給我們共享交流的機會,而QQ群等交流平臺、網絡社區的成立,我們可以一起自學,互相批評交流,也可以獲得更有效,更自主的自學成果。
於是我以人生已過半的年齡,決定繼續我的編程自學之路,開始學習python,只希望與大家共同交流,一個人的獨行是可怕的,只有一群人的共同前進才是有希望的。
誠摯期待您的交流分享批評指點!歡迎聯系我加入從零開始的自學聯盟。
這個時代互聯網成為了一種基礎設施的存在,於是本來在孤獨學習之路上的我們變得不再孤獨,因為網絡就是一個新的客廳,我們時刻都可以進行沙龍活動。
非常樂意能與大家一起交流自己自學心得和發現,更希望大家能夠對我學習過程中的錯誤給予指點——是的,這樣我就能有許多免費的高師了——這也是分享時代,社區時代帶來的好福利,我相信大家會的,是吧!

根據完全共享的精神,開源互助的理念,我的個人自學錄制過程是全部按4K高清視頻錄制的,從手寫筆記到驗證手寫筆記的上機操作過程全程錄制,但因為4K高清文件太大均超過5G以上,所以無法上傳至網絡,如有需要可聯系我QQ578652607對傳,樂意分享。上傳分享到百度網盤的只是壓縮後的720P的視頻。

我的學習過程錄像百度盤地址分享如下:(清晰度:1280x720)

鏈接:https://pan.baidu.com/s/1vuDr039cVG0Mj0zsFv5gCg
提取碼:e6tp

Bilibili:
https://www.bilibili.com/video/av39680803/

喜馬拉雅語音筆記:
https://www.ximalaya.com/keji/19103006/149597379

孤荷淩寒自學python第五十六天通過compass客戶端和mongodb shell 命令來連接遠端MongoDb數據庫