shitou's blog 

  • Home
  • About
  • Feed
  • 十人族
  • MIX BOY
  • 塌客

Category "linux"

25
May

MongoDB入门

又一个NoSQL的文档型数据库, 之前有介绍过CouchDB, Cassandra, MongoDB最近也是异常的活跃,Slideshare上关于MongoDB的文档也是非常之多,

 

关于MongoDB的介绍这里就粘贴了,总之也是非常强大,MongoDB的官方网站中有相应的中文资料介绍,看这里


1.安装


首先下载对应平台的版本,不用安装,直接解压就行了,这里要注意的是,

a) 要分清平台是32bit还是64bit版本的,32位版本的有单个数据库文件2G的限制

b) 在部分linux中(shitou测试了CentOS 4.4和Mac OS 10.6.2平台)启动MongoDB时会直接报出float错误的信息(CentOS 4.4), 这时需要使用对应的static版本

 

2.启动


MongoDB的默认数据库文件目录是/data/db, 所以需要首先建立该目录,并保证MongoDB daemon启动用户可读写

shitous-MacBook:mongodb-osx-x86_64-1.4.2 lilei$ pwd
/usr/local/mongodb-osx-x86_64-1.4.2
shitous-MacBook:mongodb-osx-x86_64-1.4.2 lilei$ sudo bin/mongod
Password:
bin/mongod --help for help and startup options
Tue May 25 10:22:33 Mongo DB : starting : pid = 212 port = 27017 dbpath = /data/db/ master = 0 slave = 0  64-bit 
Tue May 25 10:22:33 db version v1.4.2, pdfile version 4.5
Tue May 25 10:22:33 git version: 53749fc2d547a3139fcf169d84d58442778ea4b0
Tue May 25 10:22:33 sys info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_37
Tue May 25 10:22:33 waiting for connections on port 27017
Tue May 25 10:22:33 web admin interface listening on port 28017

Tue May 25 10:22:56 connection accepted from 127.0.0.1:49332 #1
Tue May 25 10:22:57 query admin.$cmd ntoreturn:1 command  reslen:298 752ms

这样启动就可以了,默认管理端口为28017, 服务端口为27017

 

进入console

shitous-MacBook:mongodb-osx-x86_64-1.4.2 lilei$ bin/mongo
MongoDB shell version: 1.4.2
url: test
connecting to: test
type "help" for help
> 

3.使用


mongodb的数据结构为db -> collection -> data
db可以理解为关系数据库的数据库
collection可以理解为表
data为元组

与关系数据库的区别在于:
db和collection都不用创建,在对db和collection使用时mongodb会自动判断当前使用的db和collection是否存在,如果不存在会自动创建
需要注意的是在use dbname; 并不会马上创建dbname, 直到往该库中插入数据时才会创建数据库,也意味着在调用use dbname; 后, 显示当前数据库show dbs; 并不会列出dbname.

同一个collection中data的格式不用一致,比如第一个元祖可以是{name: "testuser"}, 第二个元祖可以是{age: 14, sex: "female"}.


可以把mongodb的shell完全看成是一个javascript runtime, 语法和javascript几乎一样
例子:
>use testdb;
>db.collection1.save({name: "shitou"});
>db.collection1.save({name: "ccok", age: 24});
>db.collection2.save({name: "shitou", sex: "male"});
>db.collection1.find(); #返回数组
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }
{ "_id" : ObjectId("4be82db9dc68b2484f57e442"), "name" : "ccok", "sex" : "male" }
>db.collection1.find()[0];
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }

>db.collection1.findOne({_id: ObjectId("4be82d1bdc68b2484f57e441")}) #返回一条记录
{ "_id" : ObjectId("4be82d1bdc68b2484f57e441"), "name" : "shitou" }

从上面可以看到一个collection中的数据结构不需要一致,但在实际使用和设计中每个collection中数据结构应该保持一致.

 

进一步的使用和查询使用官方的文档已经非常完整了,这里不多废话了,以后再放上具体的使用文档

 

顺便说下在Mac上有一个图形管理工具MongoHub, 用起来还是比较方便的

 

 

Tags: MongoDB

2010-05-25 10:39:36, 4205 reviews, comment

send to mailbox

Your email:

Related Posts

Mochichat新版本上线

MongoDB时间条件查询

Erlang OOP

MongoDB Schema Design

MongoDB删除map_reduce生成的tmp collection

Mongo Beijing开发者聚会

MongoDB Beijing 2011

TOP

Tags

json Impactjs Canvas fun gen_server superfly PS3 Webgame HTML5 jquery SSH tenerer MooseFS gearman-ruby Gearman MongoDB MochiChat TCP U-ka saegusa IN db command Mai Kuraki Norah Jones log iPhoneException ACG Mac Safari objective-c CouchDB LVS AJAX debian 推荐 AMQP google mail bug gettext Erlang 北京 iptables 架构 tips mysql backup function 我看 postfix 监控 SEO cache Etag memcache thread 进程 线程 无锡 yield file column mixboy xml rss gems ruby shitou shell lighttpd 安全 csrf 公司 nginx linux 模块 apache webserver 朋友 大学 生活 尼古拉斯凯奇 movie 文件同步 笑笑 歌词 auto complete plugin rails music ubuntu blog

Category

  • HTML5[3]
  • iPhone[17]
  • Erlang[11]
  • google[13]
  • 生活[45]
  • 音乐[13]
  • 电影[11]
  • linux[29]
  • web server[6]
  • mail server[3]
  • cluster[1]
  • system manage[9]
  • ruby[20]
  • ruby on rails[28]
  • 开源[4]

Episode

  • MongoDB
  • MochiChat
  • iPhoneException
  • shell
  • thread
  • memcache


Popular Posts

  • 准备开始学习Erlang了(恶狼, 二郎..)
  • Ruby遍历MemCached的key
  • 服务器监控小脚本
  • MySQL Innodb备份
  • [转载]5个有用的ruby gems

Recommended Posts

  • Tri-survive - HTML5 Game
  • Cut the rope - HTML5版
  • json_formatter
  • 在gen_server中spawn新的进程
  • Superfly - Wildflowers
  • 继续凸墙 for Mac OS
  • MongoDB Beijing 2011
  • MongoDB删除map_reduce生成的tmp collection
  • Mai Kuraki - Future Kiss
  • Erlang OOP
  • 用SSH tunnel凸墙
  • Google的语法高亮工具包
  • 大量数据的批量操作
  • 再次被和谐-_-
  • 十人族: 上线了

Friends' blogs

  • levy
  • sphance
  • andreas
  • yangkunlun
  • {:dev=>:wxianfeng}
  • bheye
  • joeydarko

Login

   注册

留言 查看留言

留言

   取消

留言 查看留言


Statistics

  • 访问次数: 316267
  • 今天访问: 62
  • 日志: 213
  • 评论: 4967
  • 音乐: 9
  • 用户: 1759


少女,不点下广告吗!

 

all by shitou

blog comments powered by Disqus

close