孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库

Posted 孤荷凌寒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库相关的知识,希望对你有一定的参考价值。

孤荷凌寒自学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:Userspw>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:Userspw>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数据库的主要内容,如果未能解决你的问题,请参考以下文章

孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解

孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录

孤荷凌寒自学python第五十三天使用python写入和修改Firebase数据库中记录

孤荷凌寒自学python第五十八天成功使用python来连接上远端MongoDb数据库

孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档

孤荷凌寒自学python第五十天第一次接触NoSql数据库_Firebase