设为首页 收藏本站
查看: 1084|回复: 0

[经验分享] MongoDB数据库初探

[复制链接]

尚未签到

发表于 2017-12-16 09:34:46 | 显示全部楼层 |阅读模式
注意: monogdb数据在使用之后必须及时 mongodb.close()否则后台崩溃。

第一部分:
  MySQL数据库是关系型数据库,但是使用node开发时多用MongoDB数据库,两者各有优势,所以综合学习会有更好的选择。
  看看官网是怎么介绍的吧~

  MongoDB is an open-source document database that provides high performance, high availability, and automatic scaling.

  即 MongoDB 是文档数据库,其中MongoDB中的每一条记录就是一个文档。下面是一些对于MongoDB数据库重要知识点的总结概括。
  1. MongoDB 中数据库、集合、文档的概念是什么? 他们之间的关系是怎样的?
  我们知道MySQL是关系型数据库,而MongoDB不是,我们使用下表进行对比:
DSC0000.png

  通过这张表中的 table joins 我们可以看出MongoDB的最大特点:不支持表连接。 即它不属于关系型数据库。
  文档


  • 文档是一组(注意:不是一个)键值对。
  • 文档类似于RDBMS中的行、记录, 多个键值对按照一定的顺序就可以组成文档(如果顺序变化了,就是另外一个文档), 文档是MongoDB中的基本组成单元。
  • MongoDB是区分大小写的,且键是字符串,而值可以是任意类型(包括文档)。
  下面就是一个文档:
  

{"name": "John Zhu", "age":21}  

  可以看出这和JSON基本上是一致的。
  集合


  • 集合是一组(当然这一组中也可能只有一个文档)文档。
  • 集合类似于RDBMS中的表, 但是对于MongoDB而言,集合中的文档其模式无需完全一致(关系数据库中,每一行都有同名的键,有对应相同类型的键值)。
  下面就是一个集合(包含了两个文档,当然也可以更多):
  

{"name": "John Zhu", "age": 21}  
{
"gender": "male", "school": "xjtu"}  

  这就是一个集合,其中包含了两个文档,值得注意的是,这个集合中的两个文档的类型并不同,也就是说MongoDB在组织记录时的方法和MySQL是不一样的。
  数据库
  数据库是由多个集合组成的,并且数据库之间是独立的,这和 MySQL 是一样的。
  下面的几个数据库是MongoDB保留的:


  • admin (root用户库)
  • local
  • config (保存分片信息)
  2. 如何在计算机上安装MongoDB数据库
  第一步: 官网下载.msi文件。
  第二步: 默认路径安装(其中 Complete 是默认安装到C盘的program files下的MongoDB中,也可以选择Custom来自定义安装文件,为了方便,推荐使用默认安装)
DSC0001.png

  默认的安装路径为:C:\Program Files\MongoDB\Server\3.4\bin。
  第三步:创建data/db
  mongodb默认会在安装的盘的根目录的创建文件夹data/db来存储数据,如果使用命令安装发现并不能创建data文件夹,那么就要手动创建该文件
  即在C盘根目录下创建data文件,data文件创建db文件夹用来存储数据库数据。
  当然也不是必须在根目录下创建data/db文件,但如果不这样,后序在操作上比较麻烦,需要指出data/db的位置才行。比如将dada/db放在了f盘,这一这样启动MongoDB服务器:
  

mongod --dbpath f:/data  

  显然,这是非常麻烦的。 
  第四步:启动MongoDB服务器(注意:如果没有第三步中创建data/db,那么本次执行将会失败!)
  复制路径C:\Program Files\MongoDB\Server\3.4\bin在cmd中进入,然后执行:
  

mongod  

  启动MongoDB服务器。

  如果我们希望更改端口,可以这样启动数据库:
  mongod -port 28888
  这就会在端口28888监听了。 我们再浏览器上输入 localhost:28888 即可访问本地的MongoDB服务器。

  在没有第三步的情况下执行此命令,结果如下:
   DSC0002.png
  可以看到开始给MongoDB服务器分配了一个pid(进程id),分配了27017端口用于访问,并且默认的数据库在C盘下的data\db下(但是执行这一步之前我们没有创建这个文件),host为我的主机名称。
  接着在中间靠后出现错误提示: exception in initAndListen: 29 Data directory C:\data\db\ not found, termination ,即由于没有找到 data\db 文件夹,所以分配数据失败,进而关闭窗口,服务器启动失败。
  在完成第三步的情况下,结果如下:
   DSC0003.png
  即同样分配了pid等,然后因为已经存在了 data/db 所以成功地导入数据,这时我们打开C盘的data/db发现就已经多了很多数据,如下:
DSC0004.png

  最终提示 : waiting for connections on port 27017...  即MongoDB数据库已经开启,等待客户端连接...
  这时我们可以在浏览器中输入 localhost:27017 , 显示如下:
   DSC0005.png
  即客户端尝试通过http协议连接MongoDB服务器。
  第五步:连接并操作数据库
  另外打开一个cmd(这是关键,因为服务器要运行,所以不能破坏刚刚开启的服务器),然后输入:
  

mongo  

  这样就打开了Mongo Shell, 然后通过shell我们就可以管理数据库了。
  如下所示:
DSC0006.png

  可以看到在输入了mongo之后,MongDB的版本为3.4.4, 成功连接到了 MongoDB 服务器,同时还给出了一些警告, 即连接控制不被允许,且对于数据和配置的读写都是不受限制的。
  注意: 这里mongod连接不带鉴权,客户端直接连上就可以操作了。 如果需要可以自行设置。
  Ok!  到这里就可以进行MongoDB数据库的操作了。但是我们发现,如果每次希望开启MongoDB服务器,并连接服务器,都需要先C: -> cd program files -> cd mongodb -> cd server -> cd 3.4 -> cd bin 然后再执行其他的操作,这是非常麻烦的。 所以将之将入环境变量是一个不错的方法!
  第六步: 将mongodb路径加入环境变量,方便操作。
  如下所示:
DSC0007.png

  现在我们发现,即使不进入bin文件,也可以直接执行mongod命令(开启MongoDB数据库)和mongo命令(连接MongoDB数据库)了,如下所示:
DSC0008.png

DSC0009.png

  3. 什么是Mongo Shell?  他有什么用
  MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。所以在shell中我们就可以执行JavaScript代码,包括函数。(console不可使用)。如下所示:
DSC00010.png

  可以看到通过mongo我们就可以进入shell了,然后就可以使用一些简单的js代码, 通过ctrl + c或者是quit() 函数可以退出shell。
DSC00011.png

  可以看到我们可以利用 {} 来多行输入。
  另外,我们输入db,可以发现会返回test, 即test是默认的MongoDB数据库。
  下面是在shell中的一些基本操作:
DSC00012.png

  即其中的 show dbs可以显示出当前所有的数据库, use admin表示切换到admin数据库, 而 db 表示显示当前的数据库。

第二部分
  什么是Mongoose呢?它是用于管理数据的。后面详细介绍。
  mongoose实际上就是对操作mongoDB数据库代码的一层封装,方便我们通过js使用数据库。 但是直接使用mongodb也是可以的。
  这里有mongoose的学习文档。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424617-1-1.html 上篇帖子: mysql数据库和mongodb数据库的相关操作以及两个数据库的区别 下篇帖子: MongoDB 副本集和C#交互,简单测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表