MongoDB入门教程(一)
Stacia39W
8年前
<h2>MongoDB简介</h2> <p>MongDB是一个高性能,开源,无模式的文档型NosQL数据库。</p> <h2>主要功能特性:</h2> <p>1.文件存储格式BSON(一种json的扩展)<br> 2.模式自由<br> 数据格式不受限了表的结构<br> 3.支持动态查询<br> 4.支持完全索引<br> 5.支持复制(其主从复制)和故障恢复<br> 6.使用高效的二进制数据存储,包括大型对象<br> 7.自动处理碎片,以支持云计算层次的扩展。<br> 8.支持Java、Ruby、Python、C++、PHP等多种语言<br> 9.内部支持Javascript</p> <h2>MongoDB的优势</h2> <p>1.查询速度快<br> 2.高并发。可以达到2万个并发。<br> 3.高容量。支持10TB意思的数据量<br> MongoDB使用场景<br> 1.网站数据<br> 2.缓存<br> 3.大尺寸、低价值的数据<br> 4.高伸缩的场景<br> 5.用于对象以及Json数据存储</p> <h2>MongoDB限制</h2> <p>1.在32位操作系统上,不支持大于2.5G的数据<br> 2.单个文件大小限制16M<br> 3.高度事务的系统<br> 4.传统商业智能应用</p> <h2>MongoDB与其他数据库区别</h2> <p><img alt="这里写图片描述" src="https://simg.open-open.com/show/bbebb97f40b247e7865ba3c394305737.jpg"></p> <p>MongoDB安装</p> <p>在这里,主要讲解的是win下安装,关于Linux下安装,随后会添加上。<br> 下载网址:官方网站(<a href="/misc/goto?guid=4959671836857755614">https://www.mongodb.org/downloads/#production</a>)<br> 在这里使用的是win32<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/7ca4875327632e42da0c1820e8b5206c.jpg"><br> 笔者下载老长时间才下完,估计是个人网速问题,<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/5d289300334d60d048678da4f2a24640.jpg"></p> <p><img alt="这里写图片描述" src="https://simg.open-open.com/show/56afe7981a84a22ba427d5f5e8bc90e4.jpg"><br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/aeb1c2be18de0d8dcb0a267756bc5833.jpg"><br> 安装好之后,安装目录下,发现有如下目录<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/a73fe01c3257ece48569f4914ba69b03.jpg"></p> <h2>配置path路径[可选]</h2> <p>配置path路径目的便于,直接可以再命令提示符输入mongoDB命令,不需要每次在切换到mongoDB的bin目录。在[我的电脑]右键,选择[属性]=>[高级系统设置]=>[高级]=>[环境变量设置]=>系统变量里面的[path]修改,添加mongoDB的bin目录,我添加的目录是’C:\Program Files\MongoDB\Server\3.2\bin’<br> 操作步骤截图如下:<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/27fd820857be154682d1b8375ecb1aaf.jpg"></p> <p>启动MongDB服务端</p> <p>参照官方网站:<a href="/misc/goto?guid=4959671836944475651">https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/#install-mongodb-community-edition</a><br> 启动MongDB步骤如下</p> <h2>设置MongDB执行环境</h2> <p>官方原话如下:<br> Set up the MongoDB environment<br> 1.MongoDB requires a data directory to store all data. MongoDB’s default data directory path is \data\db. Create this folder using the following commands from a Command Prompt:<br> md \data\db<br> mongoDB需要指定一个目录来存储数据。在win下在命令提示中,你可以使用md命令创建目录。在此,我将创建一个data目录和log目录,分别用于存放数据和日志。吐槽一下,感觉win下创建目录确实没有linux下方便。<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/f93a944a3868574e6004edef8871f90f.jpg"><br> 此时该目录下创建目录如下<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/7e9f4841f44167437ad0748160ded28d.jpg"></p> <h2>启动mongoDB(针对服务端)</h2> <p>官方原话如下:<br> To start MongoDB, run mongod.exe. For example, from the Command Prompt:<br> C:\mongodb\bin\mongod.exe<br> This starts the main MongoDB database process. The waiting for connections message in the console output indicates that the mongod.exe process is running successfully.<br> 就是我们通过mongod.exe来启动mongoDB,启动了MongoDB主数据进程,如果出现等待连接的消息,则暗示着mongod.exe进程正在成功运行着。<br> 好了,现在我们开始启动了。<br> 启动命令如下:<br> <code>mongod.exe --dbpath="C:\Program Files\MongoDB\Server\data" --logpath="C:\Program Files\MongoDB\Server\log\mongodb.log" --port=27017</code><br> 如果没有配置mongoDB的path目录,需要先切换到mongoDB的bin目录下或是使用C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe去执行。<br> 解析:dbpath指定数据存放目录,可自行指定<br> logpath指定日志路径,可以自行指定<br> port指定端口号,默认的是27017</p> <p>此时既然爆出如下错误<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/d348a9499e2bc9f0486a44c0991b4f09.jpg"><br> 也就是说32位系统默认情况下没有开启日志记录功能,请使用–journal开启。<br> 但是当我进入C:\Program Files\MongoDB\Server\log目录下时候,发现有日志,其内容如下:</p> <pre> 016-04-28T21:42:47.003+0800 I CONTROL [main] Hotfix KB2731284 or later update is not installed, will zero-out data files 2016-04-28T21:42:47.071+0800 I CONTROL [initandlisten] MongoDB starting : pid=17916 port=27017 dbpath=C:\Program Files\MongoDB\Server\data 32-bit host=YEGZT8JOIIU2LKY 2016-04-28T21:42:47.072+0800 I CONTROL [initandlisten] targetMinOS: Windows Vista/Windows Server 2008 2016-04-28T21:42:47.072+0800 I CONTROL [initandlisten] db version v3.2.5 2016-04-28T21:42:47.072+0800 I CONTROL [initandlisten] git version: 34e65e5383f7ea1726332cb175b73077ec4a1b02 2016-04-28T21:42:47.072+0800 I CONTROL [initandlisten] allocator: tcmalloc 2016-04-28T21:42:47.073+0800 I CONTROL [initandlisten] modules: none 2016-04-28T21:42:47.073+0800 I CONTROL [initandlisten] build environment: 2016-04-28T21:42:47.073+0800 I CONTROL [initandlisten] distarch: i386 2016-04-28T21:42:47.073+0800 I CONTROL [initandlisten] target_arch: i386 2016-04-28T21:42:47.073+0800 I CONTROL [initandlisten] options: { net: { port: 27017 }, storage: { dbPath: "C:\Program Files\MongoDB\Server\data" }, systemLog: { destination: "file", path: "C:\Program Files\MongoDB\Server\log\mongodb.log" } } 2016-04-28T21:42:47.090+0800 I STORAGE [initandlisten] exception in initAndListen: 28663 Cannot start server. The default storage engine 'wiredTiger' is not available with this build of mongod. Please specify a different storage engine explicitly, e.g. --storageEngine=mmapv1., terminating 2016-04-28T21:42:47.090+0800 I CONTROL [initandlisten] dbexit: rc: 100</pre> <p>这日志记录的跟,命令提示中提示的还不一样啊,怎么办?因为命令提示中,提示是因为日志没有开启造成的错误,而日志说引擎不合适。只能先一个尝试一下。那我不添加日志,执行如下命令<br> <code>mongod.exe --dbpath="C:\Program Files\MongoDB\Server\data" --port=27017</code><br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/f8de039daf8d0c22b444d0cf09ffbc4e.jpg"><br> 通过这个提示,看来这次确定了,是默认存储引擎不支持了。只好换一个引擎。执行如下命令:<br> <code>mongod.exe --dbpath="C:\Program Files\MongoDB\Server\data" --logpath="C:\Program Files\MongoDB\Server\log\mongodb.log" -storageEngine="mmapv1" --port=27017 --journal</code><br> 执行结果如下:<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/9b31eff52d758cf151bb895b39a363dc.jpg"><br> 一直在等待连接中,此时我查看了一些log日志<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/220d58e732574b1b074cd8ce3032ce5f.jpg"><br> 看来是启动了。</p> <h2>连接MongoDB(针对客户端)</h2> <p>官方原话如下:<br> Connect to MongoDB.¶</p> <p>To connect to MongoDB through the mongo.exe shell, open another Command Prompt.</p> <p>C:\mongodb\bin\mongo.exe<br> If you want to develop applications using .NET, see the documentation of C# and MongoDB for more information.</p> <p>要想连接MongoDB,需要打开另外一个命令提示符窗口,通过mongo.exe来建立连接。如果要使用 .NET开发应用,需要查看C#文档和其他MongoDB手册,来获取更多信息。</p> <p>说白了,就是客户端通过mongo.exe来连接mongoDB。其实直接输入mongo也一样,当然我这里面出现了一些警告信息,暂时可以不去理会。<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/b7031112244bdaa5e1056b57f82895b4.jpg"></p> <p>客户端连接mongoDB方式如下(里面的mongoDB也可以换成mongo.exe)<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/436fd20820c24bbe9b2a108fd067dedf.jpg"></p> <h2>常用命令</h2> <p>1.db.help()<br> 查看命令提示<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/6642a13ab75099f05556e07103b6e78e.jpg"><br> 2.db<br> 查看当前所在数据库的名字<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/737cd981396e4d7e2b0d2c21c72afc59.jpg"><br> 3.use命令<br> use+数据库名 表示切换或是创建数据库。和Mysql中use的唯一不同点,就是当数据库不存在的时候,MongoDB中的use可以创建数据库。<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/0105a24856c78aed63e9979d53b6d3c5.jpg"><br> 4.show dbs<br> 显示数据库,需要注意的是show dbs,只会显示有数据的库,没有数据的库,是不会显示的。下图中,dqs数据库中,开始没有数据,所以不会显示,当我插入一条数据库后,show dbs 就会显示它。<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/b01d2a14b4da9e865e8316b5ce49c3ad.jpg"><br> 5.db.dropDatabase()<br> 删除当前数据。<br> 删除之前<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/bf20d020cdd1f29f7ad7b8f6db9856f0.jpg"><br> 执行删除操作,删除之后,当前库不变化。<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/ed9944098561eb269349f9a55ae35c43.jpg"><br> 删除之后,数据库文件也没有了。<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/006ce40eece135f7da6d0e6de573bd82.jpg"><br> 6.db.stats()<br> 查看当前数据的状态<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/2ec397729cba78a2181acf719fb73e6c.jpg"><br> 7.db.version()<br> 查看mongoDB版本<br> 8.db.getMongo()<br> 查看当前连接机器的ip<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/3e12b54af8a54b8e7d328ebf255ad1dd.jpg"><br> 9.mongoDB对支持JavaScript<br> 因为mongoDB支持JavaScript,所以可以直接在命令提示中输入js代码。如下图<br> <img alt="这里写图片描述" src="https://simg.open-open.com/show/13daa3c8b72afc3753bf97e2580da4e5.jpg"></p> <p> </p> <p>来自: <a href="/misc/goto?guid=4959671837031168564" rel="nofollow">http://blog.csdn.net/hsd2012/article/details/51279472</a></p>