mongoDB初探第一篇

早就久仰mongoDB大名,一直没有决心开始学习,从昨天开始尝试了一把,发现真是轻巧,熟悉了oracle之后,去看mysql,发现mysql真是够轻量级的,结果再看mongoDB,更加感觉轻量级。
一般数据库的安装都是复杂,繁琐,都是需要一些配置的,有些还要一些第三方软件依赖等等。
学习mongoDB感觉真是太轻巧了。感觉就是一个解压这么简单。
虽然简单但是过程总是艰辛的,也碰到一些大大小小的问题,有些问题让人丈二和尚抓不着头脑,庆幸的是在今天都解决了大部分,在此分享。
安装mongoDB,可以通过官方网站下载。
-->下载安装包
我在linux环境中直接下载即可。官方链接是http://www.mongodb.org/downloads
不过下载的时候碰到了一些问题,貌似是https的原因导致的,使用了选项--no-check-certificate也还是不行

[mongodb@jeanron1005 ~]$ wget https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.1.tgz
--2015-03-14 06:31:01--  https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.1.tgz
Resolving fastdl.mongodb.org... 54.230.158.161, 54.230.159.47, 54.230.159.38, ...
Connecting to fastdl.mongodb.org|54.230.158.161|:443... failed: Connection refused.
Connecting to fastdl.mongodb.org|54.230.159.47|:443... connected.
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.

[mongodb@rac1 ~]$ wget --no-check-certificate https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.1.tgz
--2015-03-14 06:32:51--  https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.1.tgz
Resolving fastdl.mongodb.org... 54.192.156.61, 54.230.159.80, 54.230.159.35, ...
Connecting to fastdl.mongodb.org|54.192.156.61|:443... connected.
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

最后使用curl终于可以了
[mongodb@rac1 ~]$ curl -O -L https://fastdl.mongodb.org/linux/mongodb-linux-i686-2.6.1.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 11 113M   11 5695k    0     0  64416      0  0:12:58  0:01:30  0:11:28 97640

-->mongoDB的目录结构
[mongodb@jeanron1005 ~]$ ll
total 111324
drwxr-xr-x 3 mongodb dba      4096 Mar 15 06:52 mongodb-linux-i686-2.6.1
-rw-r--r-- 1 mongodb dba 113869484 Mar 15 06:52 mongodb-linux-i686-2.6.1.tgz

mongoDB的目录结构很简单,只有一个bin目录,里面只有一些可运行文件。
[mongodb@jeanron1005 mongodb-linux-i686-2.6.1]$ ll
total 64
drwxr-xr-x 2 mongodb dba  4096 Mar 15 06:52 bin
-rw-r--r-- 1 mongodb dba 34520 May  5  2014 GNU-AGPL-3.0
-rw-r--r-- 1 mongodb dba  1359 May  5  2014 README
-rw-r--r-- 1 mongodb dba 17793 May  5  2014 THIRD-PARTY-NOTICES

[mongodb@jeanron1005 bin]$ ll
total 210616
-rwxr-xr-x 1 mongodb dba 23081996 May  5  2014 bsondump
-rwxr-xr-x 1 mongodb dba 23150252 May  5  2014 mongodump
-rwxr-xr-x 1 mongodb dba 23096652 May  5  2014 mongoexport
-rwxr-xr-x 1 mongodb dba 23143548 May  5  2014 mongofiles
-rwxr-xr-x 1 mongodb dba 23119148 May  5  2014 mongoimport
-rwxr-xr-x 1 mongodb dba 23088364 May  5  2014 mongooplog
-rwxr-xr-x 1 mongodb dba  7283200 Mar 15 06:52 mongoperf
-rwxr-xr-x 1 mongodb dba 23188140 May  5  2014 mongorestore
-rwxr-xr-x 1 mongodb dba 23139404 May  5  2014 mongostat
-rwxr-xr-x 1 mongodb dba 23085228 May  5  2014 mongotop

其实如果自己学习需要,就不用额外的配置了.
-->启动mongoDB服务
启动mongoDB的方式很简单,可以通过mongod --help来得到
可以通过如下的命令,--dbpath是对应的目录,logpath是对应的目录日志  --fork是在后台启动,让人郁闷的是,启动到最后的时候报错退出了。
[mongodb@jeanron1005 bin]$ ./mongod --dbpath=/home/mongodb/data --fork --logpath=/home/mongodb/logs 
2015-03-15T15:57:51.502+0800 
2015-03-15T15:57:51.504+0800 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
2015-03-15T15:57:51.505+0800 
about to fork child process, waiting until server is ready for connections.
forked process: 6926
ERROR: child process failed, exited with error number 1

查看了各种资料无果,最后在windows上安装了一遍,采用同样的方式,终于发现是日志的设置有问题,--logpath需要设置日志的文件而不是目录
修改为文件之后,就没有问题了。
[mongodb@jeanron1005 bin]$ ./mongod --dbpath=/home/mongodb/data --fork --logpath=/home/mongodb/log
2015-03-15T15:58:42.557+0800 
2015-03-15T15:58:42.559+0800 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
2015-03-15T15:58:42.559+0800 
about to fork child process, waiting until server is ready for connections.
forked process: 6931
child process started successfully, parent exiting

mongoDB会相应的启动多个子进程,可以通过pstree看到基本的结构。

[mongodb@jeanron1005 bin]$ pstree -p|grep mongod
        |-mongod(6931)-+-{mongod}(6932)
        |              |-{mongod}(6933)
        |              |-{mongod}(6934)
        |              |-{mongod}(6935)
        |              |-{mongod}(6936)
        |              |-{mongod}(6937)
        |              |-{mongod}(6938)
        |              |-{mongod}(6939)
        |              `-{mongod}(6940)
那么6931对应的进程是多少呢?
[mongodb@jeanron1005 bin]$ ps -ef|grep 6931
mongodb   6931     1  0 15:58 ?        00:00:00 ./mongod --dbpath=/home/mongodb/data --fork --logpath=/home/mongodb/log
mongodb   6977  6307  0 16:00 pts/2    00:00:00 grep 6931

-->连接mongoDB
连接mongoDB可以直接通过运行mongo来运行
[mongodb@jeanron1005 bin]$ ./mongo 
MongoDB shell version: 2.6.1
connecting to: test
Server has startup warnings: 
2015-03-15T15:58:42.605+0800 [initandlisten] 
2015-03-15T15:58:42.605+0800 [initandlisten] ** NOTE: This is a 32 bit MongoDB binary.
2015-03-15T15:58:42.605+0800 [initandlisten] **       32 bit builds are limited to less than 2GB of data (or less with --journal).
2015-03-15T15:58:42.605+0800 [initandlisten] **       Note that journaling defaults to off for 32 bit and is currently off.
2015-03-15T15:58:42.606+0800 [initandlisten] **       See http://dochub.mongodb.org/core/32bit
2015-03-15T15:58:42.606+0800 [initandlisten] 

来查看一下有哪些数据库,可以使用show dbs
连接哪个数据库,使用use,和mysql基本很相似。
> show dbsshow dbs
admin  (empty)
local  0.078GB
> use admin
switched to db admin
如果不确定有哪些命令可用,可以使用help
> help
        db.help()                    help on db methods
        ....
        it                           result of the last line evaluated; use to further iterate
        DBQuery.shellBatchSize = x   set default number of items to display on shell
        exit                         quit the mongo shell
-->关闭mongoDB

关于关闭mongoDB可以通过如下的方式来实现,
一种是通过pkill mongod,如pkill mongod
一种是调用mongoDB对应的api
连入admin库,使用db.shutdownServer()

> db.shutdownServer()db.shutdownServer()
2015-03-15T16:04:33.678+0800 DBClientCursor::init call() failed
server should be down...
2015-03-15T16:04:33.690+0800 trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
2015-03-15T16:04:33.691+0800 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-03-15T16:04:33.692+0800 reconnect 127.0.0.1:27017 (127.0.0.1) failed failed couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed

[mongodb@jeanron1005 bin]$ pstree -p|grep mongod
[mongodb@jeanron1005 bin]$

时间: 2024-10-26 01:29:00

mongoDB初探第一篇的相关文章

MongoDB初探第二篇

与sql语句的简单对比 在第一篇中分享了一些MongoDB的基本知识点,因为安装运行其实都还是很轻巧的,所以对于大家上手来说应该问题不大,但是安装完成,数据库也可以连接了,但是MongoDB中是没有办法运行sql语句的.这个时候关系型数据库中的一些思维直接移植过来就不适用了,但是大道至简,其实道理还是相同的,对于的数据的操作可以通过api来完成,这个从某种程度上来说,是MongoDB的亮点也是另外一种优势. 我简单的总结了一下常用的sql语句的一些用法在MongoDB中改怎么使用. 首先一个很大

【实战HTML5与CSS3 第一篇】初探水深,美丽的导航,绚丽的图片爆炸!!

原文http://www.cnblogs.com/yexiaochai/archive/2013/04/29/3050798.html 前言 先八卦一下,我昨天离职了,把电脑也退了,离职前,我发了一封邮件给整个部门,陈述自己的不舍与团队管理问题(估计传说中的leader要抓狂了),然后就昏昏的回家了,所以昨天没有什么产出. 最近经常有朋友惊叹我的发帖速度很快,其实是有原因的,我最近两周要离职,所以就不太理我那传说中的leader了,每天多出很多时间可以学习. 但是,下周后便会入职一家新公司了,我

如何提高WEB程序的效率 (第一篇SQL篇)  (转)

web|程序 如何提高WEB程序的效率 (第一篇"SQL篇") 很多网友非常不喜欢用ASP来编程,他们总是抱怨说ASP程序太慢,效率太低.更希望用PHP,JSP等来写程序.其实不能从 "认为" 这个角度来看问题 ,而应该从实际中看问题,ASP真的很慢的吗,那么微软的站为何用ASP也不慢呢?PHP真的很快吗,其实它也仍然是解释性的语言.只不过在Linux下的结合比较好而以.JSP的开发也不会简单到何处,而且要通过JDBC-ODBC桥才能连接ACCESS库等,这种情况下

如何提高WEB程序的效率 (第一篇)

web|程序 很多网友非常不喜欢用ASP来编程,他们总是抱怨说ASP程序太慢,效率太低.更希望用PHP,JSP等来写程序.其实不能从 "认为" 这个角度来看问题 ,而应该从实际中看问题,ASP真的很慢的吗,那么微软的站为何用ASP也不慢呢?PHP真的很快吗,其实它也仍然是解释性的语言.只不过在Linux下的结合比较好而以.JSP的开发也不会简单到何处,而且要通过JDBC-ODBC桥才能连接ACCESS库等,这种情况下效率也不高. 其实,三种语言各有特点,就是优,缺点.作为一个程序员不应

CoreOS Fest 系列之第一篇:容器江湖

本文讲的是CoreOS Fest 系列之第一篇:容器江湖,[编者的话] 这是总结 CoreOS Fest 大会的三篇文章之一,主要介绍了 CoreOS 公司与 Docker 公司之争,新成立的 appc 规范委员会, Tectonic 平台, Kubernetes 项目. 最近在旧金山, Linux 容器已经显得非常有「钱」景,看起来每个人都想从这个有几十亿美金规模的新市场中分得一杯羹.多家创业公司和云主机公司已经或者即将召开有关容器的大会,包括 4 月 17 日召开的 Container Ca

[老老实实学WCF] 第一篇 Hello WCF

原文:[老老实实学WCF] 第一篇 Hello WCF 老老实实学WCF  第一篇 Hello WCF   WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用程序的编程模型,涉及面之广,技术之复杂,结构之零散,让我们初学这门技术的菜鸟时常有无处下手的感觉,此系列博文系笔者艰难探索WCF技术过程的学习笔记,笔者抱着老老实实的态度,力图扎扎实实,循序渐进地学好这门技术,文中难免有疏漏和错误之处,还请

15天玩转redis —— 第一篇 开始入手

一:Redis是什么? 这个我想怎么总结呢,突然发现再好的解释也没有redis官网解释的好,它的解释已经达到超宇宙的级别了...不信你可以看看. 人家也说了,redis是个内存存储的数据结构服务器,这个听起来有多么牛逼啊....一说到数据结构,第一反映就会想到C#中那些dictionary,hashset,list, SortDictionary等等...然后你也会想到这些数据结构有如下一些缺点. 比如: 1. dictionary不能在多台机器中共享内存,除非你用wcf把dictionary单

《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一第一篇 执行计划

第一篇 执行计划 执行计划是指示Oracle如何获取和过滤数据.产生最终结果集,是影响SQL语句执行性能的关键因素.我们在深入了解执行计划之前,首先需要知道执行计划是在什么时候产生的,以及如何让SQL引擎为语句生成执行计划. 在深入了解执行计划之前,我们先了解SQL语句的处理执行过程.当一条语句提交到Oracle后,SQL引擎会分为三个步骤对其处理和执行:解析(Parse).执行(Execute)和获取(Fetch),分别由SQL引擎的不同组件完成.SQL引擎的组件如图1-1所示. 1. SQL

Android开源项目第一篇——个性化控件(View)篇

本文为那些不错的Android开源项目第一篇--个性化控件(View)篇,主要介绍Android上那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其他如Dialog.Toast.EditText.TableView.Activity Animation等等. 本文中你可以找到那些精美App中各种有特性的View,如Gmail的左滑出菜单.Google plus的卡片式L