mongodb初体验

mongodb初体验

 

      如果要选出近两年最火的web技术的话,NOSQL必定为其中之一!鉴于业务量发展的压力,最近项目组也希望完全迁移至NOSQL,所以也关注下NOSQL的知识(之前也有关注,但只是看看介绍而已,没有深入了解),这期间注意到mongodb。不同于Cansandra的key-value形式,mongodb的数据是以文档为单位存储的,mongo中所谓的的文档就是类似于json格式的数据(在mongodb中叫bson),文档是存放于集合(collection)之下的,实际应用中,这里的集合就相当于关系数据库中的表,而一个文档就相当于表中的一行数据,不过mongodb的好处是,collection下可以存放任何符合bson格式的文档,而关系数据库的表中存放的数据是预定义好的,不可变的(几乎),这一点上mongodb非常符合我们不断变化的业务。

      mongodb的安装非常简单:

 

  1. 先到http://www.mongodb.org/downloads下载最新稳定版的mongodb包,解压到你希望存放的任何目录;打开看看mongodb目录看看,里面的文件很少,只有bin目录下有10个可执行文件,其中mongod.exe就是mongodb核心服务,mongo.exe是其一个命令行客户端,简单称之为mongo shell。
  2. 如果使用的windows,在mongodb所在的盘的根目录下建一个data目录,再到data目录下建一个db目录;如果使用的是linux/unix,运行如下两个命令就行:sudo mkdir -p /data/db/ ; sudo chown `id -u` /data/db。因为mongodb默认会把数据存放到其所在盘下的data/db目录下(linux下就是/data/db),而它发现这个目录不存在时又不会自己去创建这个目录(sb),所以必须得我们手工创建目录。当然mongodb也可以不是用默认目录,启动时指定--dbpath参数即可。就这么简单,单机下的db就安装工作就安装就绪了……下面体验下mongodb。

体验mongodb:

 

  1. 进入mongodb/bin目录,运行mongodb.exe,这样mongodb服务就启动了。
  2. 再打开mongo.exe,启动mongo shell,默认它会自动连接到本地mongodb服务,并默认使用一个名字为test的数据库,并将database实例赋给db变量(mongo shell里使用的是javascript脚本操作数据库),如下:

     
     
  3. 先插入一条是数据试试,输入命令:db.picture.insert({picId:1,picSize:1999201,deleted:0}); 中间的picture就是我们指定的一个集合,而insert的参数就是我们要插入的文档数据,再输入db.picture.find()查询看看数据是否写入,截图如下:

     查询结果就是我们刚刚插入的一条记录,不过多了一个"_id"属性,这个是mongodb自动生成的,不可删除,mongodb会在这个字段上建索引。另外注意,文档必须是某一个集合之下的,picture是之前并不存在的集合,mongodb如果发现集合不存在会自动创建一个集合。
  4. 插入另外一个结构完全不同的文档试试,执行db.picture.insert({a:1,b:2}),再执行db.picture.find()查询看看:

     picture集合下有两个完全不同的文档。
  5. 弄个复杂点的(在mongo shell里是可以执行javascript脚本的): for(i=2;i<10;i++)db.picture.insert({picId:i,picSize:10000,deleted:i%2});
     然后在查询看看:

     帅!
  6. 为了适合客户需求,我们要给图片添加个短地址,短地址的规则是:一级图片类别/二级图片类别/图片名,看看我如何给图片动态添加个字段的:db.picture.update({picId:9},{$set:{shortUrl:"/cat1/cat2/pic1"}});执行完后查询看看

     picId为9的那条记录已经多了个shortUrl属性,我们的业务已经完全不在局限于数据库的设计了,因为我们随时可以动态的修改它!
简单的体验了mongodb,它的功能确实非常强大,特别在可扩展性方面,还有其对javascript的支持,感觉与Node.js是天生的一对, 哈哈……有空再慢慢研究。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值