一、引言
??????????? 上一篇文章,我介绍了如何在Linux系统上安装和配置MongoDB,其实都不是很难,不需要安装和编译,省去了Make && Make Install 命令的使用。我们既然介绍了在Linux系统(确切的说是CentOS 7上)上如何安装MongoDB,那么在Windows上的安装也是必不可少的环节,要想懂得更全面,必须自己亲身去做这些安装和配置,只有自己亲身操作了,才会给你留下更深的印象,废话不多说,就是我们的文章吧。
二、MongoDB简介
??????? ? MongoDB? 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
????????? MongoDB? 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
????????? MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
????? ??? 使用场景:
????????????????? 1、MongoDB 的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS 系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,Mongo 适用于以下场景。
???????????? ? ? ? ? ? ?? ● 网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
????????????????????????? ● 缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。
???????????? ? ? ? ? ? ?? ● 大尺寸、低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
????????????????????????? ● 高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。
????????????????????????? ● 用于对象及JSON 数据的存储:Mongo 的BSON 数据格式非常适合文档化格式的存储及查询。
?????????????????? 2、MongoDB 的使用也会有一些限制
????????????????????????? ● 高度事务性的系统:例如,银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
???????????? ? ? ? ? ? ?? ● 传统的商业智能应用:针对特定问题的BI 数据库会产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
????????????????????????? ● 需要SQL 的问题。
??????? 主要特点:
???????????? ? ? 1、MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
???????????? ? ?? 2、你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
?????????? ?? ??? 3、你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
???????????? ???? 4、如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。
???????????? ???? 5、Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 ? ???????????? ???? 6、MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
???????????? ???? 7、Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
??????????? ??? ? 8、Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
???????????? ?? ? 9、Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
??????????? ? ? 10、GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
?????????? ???? 11、MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
??????????????? 12、MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
??????????? ??? 13、MongoDB安装简单。
三、安装详解
???????? 为了让大家理解的更清楚,我一般都进行了截图,大家可以放心一步一步的来学习。人都有一个毛病,对自己不知道的事情就没有信心,我当然也有这个毛病,其实只要努力研究一下子,是可以搞定的,开始我们的教程吧。
???????? 1、官网下载地址
????????????? ? ? ? ?? MongoDB 提供了可用于 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center?jmp=nav#community
??????????????????????

?????????? 2、目前MongoDB官网,只提供Windows Server 2008 R2 64位版本的MSI安装包,点击【Download】下载MongoDB安装包
???????????????????????? 
?????????? 3、根据你的系统下载 64 位的 .msi 文件,下载后双击该文件,按操作提示安装即可。开始安装,直接点击【下一步】
??????????????????????? 
??????????? 4、同意协议,否则无法继续安装,点击【下一步】。
??????????????????????? 
??????????? 5、选择安装的类型,我们选择【自定义】,修改安装目录
????????????????????? 你可以通过点击 "Custom(自定义)" 按钮来设置你的安装目录。
????????????? ? ? ? ? ? ??? 
????????????? ? ? ? ? ? ??? 
????????????? ? ? ? ? ? ???? 
??????????? 6、开始安装MongoDB应用程序
?????????????????????????? 
????????????? ? ? ? ? ?? ? 
????????????? ? ? ? ? ? ?? 
???????????? 7、 创建保存 Mongodb 数据文件和日志文件的目录:
?????????????????????????? MongoDB的数据文件和日志文件的目录地址可以定义在任何地方,但是我定义在安装目录下。
?????????????????????????? MongoDB当前的安装目录:D:Program FilesMongoDBServer3.6
?????????????? ? ? ? ? ? ? MongoDB数据文件的目录:D:MongoDB3.6Datas
?????????????? ? ? ? ? ??? MongoDB日志文件的目录:D:MongoDB3.6Logs
?
???????????????????????? 需要说明一点,Mongodb的数据文件和日志文件的保存目录地址不能包含空格,否则会启动MongoDB服务,例如:Program Files,这样的目录是不可以的,因为Program 和 Files之间有空格,我搞了半天才明白,血的代价。 ???????????????
?????????????? 8、命令行下运行 MongoDB 服务器
???????????????????????? 为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行 mongod.exe 文件。cd 到 D:Program FilesMongoDBServer3.6bin 目录下面。数据目录和日志目录的地址中不能包含特殊字符,中文字符,也不能包含空格字符,比如:数据目录地址是 D:Program FilesMongoDBServer3.6binDatas,就是因为有“Program Files”这个目录,中间有空格,不能创建目录,导致启动MongoDB服务失败,切记。
D:Program FilesMongoDBServer3.6bin>mongod --dbpath D:MongoDB3.6Datas --logpath D:MongoDB3.6Logsmongodb.log --bind_ip 192.168.127.1 --port 27017
??????????????????
D:Program FilesMongoDBServer3.6bin>mongod --dbpath=D:MongoDB3.6Datas --logpath=D:MongoDB3.6Logsmongodb.log --bind_ip=127.1 --port=27017
??????????????????????????? --dbpath --logpath bind_ip port,这些参数和值可以通过“ ”空格连接,也可以通过“=”连接,效果相同
????????????????????????? IP 地址和Port 端口号可以不写,默认连接IP是127.0.0.1,Port端口号:27017,以上连接是短连接,关闭其窗口,MongoDB服务就是关掉,打开MongoDB服务的窗口是不能关闭的,关闭就不能提供服务。也可以通过Ctrl+C 退出MongoDB启动的服务。
??????????????????????????? ? ? ? ?

?????????????????????????? 如果想长期提供服务,可以以Windows服务的形式启动MongoDB服务。
D:Program FilesMongoDBServer27017 --install -serviceName "MongoDBService"
??????????????????????????? 8.1、启动MongoDB的服务
D:Program FilesMongoDBServer3.6bin>net start MongoDB
MongoDB服务正在启动。
MongoDB服务已经启动成功。
?????????????????????????? 8.2、关闭MongoDB的服务
D:Program FilesMongoDBServernet stop MongoDB
MongoDB服务正在停止。
MongoDB服务已经停止成功。
??????????????????????????? 8.3、移除MongoDB的服务
D:Program FilesMongoDBServer3.6bin>mongod --serviceName MongoDBService --remove
2018-03-25T14:38:26.643+0800 I CONTROL [main] Tryiing o remove Windows service ''
26.999+0800 I CONTROL [main] Service ' removed
??????????????????????????? 8.4、配置参数说明
参数 描述
--bind_ip 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP --logpath 定MongoDB日志文件,注意是指定文件不是目录
--logappend 使用追加的方式写日志
--dbpath 指定数据库路径
--port 指定服务端口号,默认端口27017
--serviceName 指定服务名称
--serviceDisplayName 指定服务名称,有多个mongodb服务时执行。
--install 指定作为一个Windows服务安装。
??????? ? ? 9、启动mongodb的客户端:
???????????????????? 我们可以在命令窗口中运行 mongo.exe 命令即可连接上 MongoDB,执行如下命令:
?
D:Program FilesMongoDBServer3.6bin>mongo.exe --host 27017
????????????? ??????????????????????????????? 
???
?????????????? 10、关闭或者退出Mongodb客户端
四、总结
?????????????? 好了,今天就写到这里,涉及到的安装的就到此为止了。以后开始就要写关于MongoDB的基本操作了的文章了,大家敬请期待。自己也是在学习的过程中,肯定会有很多不足的地方,也希望大家提出来,共同学习,共同进步。对了,还有一个问题,我们可以直接通过命令行的工具操作MongoDB,当然也会有可视化的工具,我使用的是:MongoChef,下载地址是:https://studio3t.com/,安装很简单,我就不演示了,大家直接按着提示安装就可以,使用也不难,好了。继续努力。 ????????????????????????????????????????????????????????????????????????????????????? (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|