注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

simonzhang个人观点

http://www.simonzhang.net 镜像地址

 
 
 

日志

 
 

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

2011-06-23 16:48:21|  分类: nosql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

   网上的介绍很多所以就不废话了,先记录几个概念,直接记录关键操作。
   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"})
  评论这张
 
阅读(706)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017