MongoDB入门系列一——MongoDB简介

MongoDB入门系列一——MongoDB简介


MongoDB是非关系数据库(NoSQL)中的一种,由C++语言编写。MongoDB是基于文档的数据库,最大的特性就是动态的数据模式,它不需要象传统的关系数据库一样在使用前必须先定义好表的结构、类型。它的这个特性使其很适合快速的web开发流程。


与关系数据库中行和列的数据存储方式不同的是,MongoDB使用二进制格式的JSON文档来存储数据。下面是MongoDB和SQL一些术语的对应:

SQLMongoDB
数据库数据库 (database)
集合 (collection)
文档 (document)
域 (field)


更多的对应关系可以参考MongoDB和SQL的对应关系表:http://docs.mongodb.org/manual/reference/sql-comparison/


支持的平台和驱动


目前MongoDB支持64位的OS X, Linux, Windows和Solaris和32位的Linux和Windows。在生产环境中应该使用64位的版本,而32位的版本应该只在开发环境中使用。


MongoDB官方支持的驱动有很多,包括Java、C/C++/C#、python、PHP、Ruby等驱动。大家可以从http://docs.mongodb.org/ecosystem/drivers/ 上了解更多的信息。


同时,MongoDB的社区开发和维护了非常多的驱动。更多的信息可以参考:

http://docs.mongodb.org/ecosystem/drivers/community-supported-drivers/



MongoDB的安装


MongoDB是一个开源的数据库,可以从官网[http://www.mongodb.org/downloads]下载已编译好的压缩包,也可以下载源码来自己编译。下载的已编译好的压缩包直接解压就可以使用。


在一些平台上,MongoDB也支持使用包管理器来直接安装。比如在Ubuntu上可以使用apt-get来安装,在CentOS上可以使用yum来安装。更多的平台支持,可以参考:

http://www.mongodb.org/downloads#packages



在开始使用MongoDB前,我们先来了解一下MongoDB的版本的命名规则。


MongoDB的版本命名规则


MongoDB的版本号由三位组成,如2.4.5。前两位代表发布的系列号,如果系列号的最后一位是偶数,表示这个版本是稳定的版本,可以用于生产环境。如果系列号的最后一位是奇数,表示这个版本是个开发版本,只供测试用。第三位表示这个版本的补丁号。

比如说目前最高的稳定版本是2.4.5,这个版本号中2.4是发布的系列号,而5表示是2.4这个系列的第五个补丁。


注:目前MongoDB的驱动的版本和MongoDB的版本不是一一对应的。



开始使用MongoDB


下面的例子里我的系统环境是Mac,MongoDB的版本是2.4.5


1)解压:


bash-3.2$ tar -xzvf mongodb-osx-x86_64-2.4.5.tgz

解压后的bin文件夹里存放这mongodb各种可执行文件。


2)启动mongod


初学者有的时候会混淆mongod数据库服务和mongo shell。mongod是MongoDB数据库服务的程序,而mongo shell是MongoDB的命令行工具。简单来说mongod就是服务器,mongo是客户端。


在bin目录下运行./mongod --help可以打印出所有mongod支持的参数。常用的参数有:

--dbpath:存放mongod数据文件的目录。默认为/data/db,这个目录需要事先创建。

--logpath:保存mongod日志的文件名。不指定这个参数时,日志都输出到启动该mongod的会话窗口。

--port:mongod进程所使用的端口号。默认为27017

--logappend:使用logpath时,这个参数就会将新的日志追加到原来的日志文件末尾,而不是重写新的日志文件。

--fork:以后台方式运行mongod。这个参数必须和--logpath或者--syslog一块儿使用。


bash-3.2$ mkdir -p /data/db
bash-3.2$ ./mongod --dbpath /data/db --logpath /data/mongod.log --logappend --fork --port 30000
about to fork child process, waiting until server is ready for connections.
forked process: 13289
all output going to: /data/mongod.log
child process started successfully, parent exiting


3)连接数据库


mongod成功启动后,我们就可以通过运行mongo连接数据库了。如果不加任何参数,mongo会连接本机的27017端口。我们可以通过--host来指定mongod的机器名,--port指定mongod运行的端口号。也可以通过mongo <host>:<port>来连接。


bash-3.2$ mongo --port 30000
MongoDB shell version: 2.4.5
connecting to: 127.0.0.1:30000/test
Server has startup warnings:
Thu Jul 11 16:02:13.974 [initandlisten]
Thu Jul 11 16:02:13.974 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>


mongo shell是MongoDB的交互式的JavaScript shell。我们可以用它来管理操作数据库,还可以用来运行JavaScript程序。


4)操作数据库


如果没有指定要连接的数据库名,mongo shell会默认连接test数据库。


我们可以使用use <database>来切换数据库,这个数据库不必事先创建:

> use mydb
switched to db mydb


显示目前使用的数据库名:

> db
mydb


往集合docs里查询一条数据:

> db.docs.insert({x:1,y:1})


查询集合docs里的文档:

> db.docs.find()
{ "_id" : ObjectId("51de4d33b41543f9704cc936"), "x" : 1, "y" : 1 }

我们可以看到这个文档比我们添加的数据多了一项_id,其类型是ObjectId。所有的MongoDB文档都需要有_id,且它的值必须是唯一的。如果我们插入的文档中没有这一项,MongoDB在插入数据库前会自动为这个文档生成一个新的ObjectId。


使用$set来更新一个文档:

> db.docs.update({x:1},{$set:{y:2}})
> db.docs.find()
{ "_id" : ObjectId("51de4d33b41543f9704cc936"), "x" : 1, "y" : 2 }

这里用到了$set操作,否则MongoDB的Update命令只会保留_id和需要更新的域。


不使用$set来更新文档:

> db.docs.update({x:1},{y:3})
> db.docs.find()
{ "_id" : ObjectId("51de4d33b41543f9704cc936"), "y" : 3 }

从这个例子我们可以看到由于我们没有使用$set,更新后的文档里{x:1}被删除了。


删除一个文档:

> db.docs.remove({y:3})
> db.docs.find()
>


在篇介绍里,我们初步了解了MongoDB、MongoDB的安装启动和用Mongo shell对数据库的增删查改操作。下一篇我们将介绍MongoDB的三种部署方式和对MongoDB的监控。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值