6月 23

MongoDB的初步-安装、简单操作

网上的介绍很多所以就不废话了,先记录几个概念,直接记录关键操作。
mongodb 的官方网站http://www.mongodb.org/

MongoDB是由(database)、集合(collection)、文档对象(document)三个层次组成。与传统的
数据库对应关系如下
关系型数据库 MongoDB数据库
database database
table collection
row document
存储的数据格式是key-value对的集合,键是字符串,值可以是数据类型集合里的任意类型,包括数组和文档对象。

测试环境:CentOS 5.6 64位操作系统
将mongodb软件安装在/usr/local/mongodb
将mongodb数据放在/data/db
应该创建一个专有的操作账户。此次不麻烦了直接使用root。

A)部署
先下载mongodb到
# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.8.1.tgz

进行解压缩
# tar xzvf mongodb-linux-x86_64-1.8.1.tgz

将文件移动到相应目录
# mv mongodb-linux-x86_64-1.8.1 /usr/local/mongodb

建立相应数据目录,也可以在启动时用–dbpath参数来指定数据库的路径
# mkdir -p /data/db

B)启、停数据库
进入mongodb的bin目录中
# cd /usr/local/mongodb/bin
可以看到以下命令
bsondump
mongo mongodb的客户端
mongod mongodb的服务端
mongodump mongodb的导出工具,导出为bson格式,也可用于备份、快照等。
mongoexport 把collection导出成json格式或csv格式的文件
mongofiles GridFS管理工具
mongoimport mongodb恢复工具速度快,但不保证数据完整导入
mongorestore mongodb恢复工具速度慢,但是根据mongodump导出的数据完整恢复
mongos mongodb的集群路程序
mongosniff mongodb操作捕获,类似于tcpdump,可以截获到要执行的命令
mongostat mongodb的运行信息。

启动数据库命令
# ./mongod
数据库正常启动,默认情况下客户端访问端口为27017,web访问端口为28017.
也可以使用–port参数直接设定,如果直接指定端口为4444,web访问端口将为5444,具体
信息会打出到启动信息中。常用参数还有
–fork 创建子进程
–logpath 指定日志目录,日志级别从多到少参数为从-v 到 -vvvvv
–directoryperdb 系统为每个 DB 创建一个独立子目录
–config 启动时调用配置文件,可有手动编辑配置文件
配置文件具体参数可以查询http://www.mongodb.org/display/DOCS/File+Based+Configuration
以 Daemon 方式运行# ./mongod –fork –logpath /dev/null

验证数据库是否启动正常。使用web比较方便,使用http://IP:port方式看到mongodb的
状态信息,表示启动成功。也可以使用客户端登陆,保存和查询数据,简单测试一下。这有点像
python中的字典。
# ./mongo
> db.foo.save({‘hi’:’hello word’})
> db.foo.find()
可以查到刚才保存的结果,表示数据库运行正常。客户端默认是连接本地的27017端口,如果
连接远程系统可以用 ./mongo ip:port的形式来指定IP和端口号。
到/data/db目录下,可以看到test.0、test.1、test.ns。因为mongodb采用预分配表空间机制,每个
分配文件都用0填充,第一个文件test.0为64MB,第二个文件为128MB ,依此类推,所以在32位模式运行时支持
的最大文件为2GB。每个库和索引也有对应的命名空间,命名空间的元数据都集中存在test.ns文件中。在数据插
入时每条数据都有”_id”,如果没有提供系统将自动生成Objectld作为该文档的主键。Objectid有4字节的时间戳,
3字节的机器号,2字节的进程id和3字节的自动计数组成。还有一个问题需要注意,文件删除后数据所占用的空
间不会被释放,所以不要存放经常要删除替换的文件。

关闭数据库
> use admin
> db.shutdownServer()

C)简单管理、操作命令

操作均为使用mongo连接后的操作提示符为>
命令列表 http://www.mongodb.org/display/DOCS/dbshell+Reference

切换库使用use,这个和mysql一样。切换后可以做的常用操作。
> use admin
查看帮助
> db.help()
查看当前表collection支持哪些方法
> db.dbname.help()
查看数据库运行统计信息
> db.serverStatus()
查看数据库的状态信息
> db.stats()
列出所有数据库
> show dbs
显示当前数据库
> db
打印最后出现的错误
> db.getLastError()
清除错误记录
> db.resetError()
添加用户,账户、密码、是否只读
> db.addUser(user,pwd,true)
列出用户
> show users
删除用户
> db.removeUser(“userName”)
清除错误记录
> db.resetError()
删除库
> db.dropDatabase()
将某个ip上的库同步到当前库
> db.cloneDatabase(“x.x.x.x”)
将某个ip上的数据复制到当前库
> db.copyDatabase(“test”,”x.x.x.x”)
查看数据空间大小
> db.userInfo.dataSize()

操作部分可以参照sql与mongo的对比
http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
添加
> db.foo.save({‘hi’:’hello word’})
> db.foo.save({‘hi’:’nihao’})

查找
> db.foo.find({“hi”:”hello word”})

修改将”nihao”修改为”ni hao “
> db.foo.update({“hi”:”nihao”},{$set:{“hi”:”ni hao”}},false,true)

删除
> db.foo.remove({“hi”:”ni hao”})