`
pxlfxl2
  • 浏览: 50792 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

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是天生的一对, 哈哈……有空再慢慢研究。

 

  • 大小: 32.2 KB
  • 大小: 17.8 KB
  • 大小: 77.6 KB
  • 大小: 100.1 KB
  • 大小: 22 KB
分享到:
评论
1 楼 coeshare 2012-09-04  
图文并茂~~谢谢哈

相关推荐

    关于node.js初体验. 如何搭建并完成一个简单的后台, 配合mongodb数据库, 实现信息的增删改查功能

    关于node.js初体验. 如何搭建并完成一个简单的后台, 配合mongodb数据库, 实现信息的增删改查功能

    nosql 入门教程

    第2章 NoSQL上手初体验 17 2.1 第一印象——两个简单的例子 17 2.1.1 简单的位置偏好数据集 17 2.1.2 存储汽车品牌和型号数据 22 2.2 使用多种语言 30 2.2.1 MongoDB驱动 30 2.2.2 初识Thrift 33 2.3 小结 ...

    microscope:Discover Meteor书籍教程中的应用(作为代码完成)

    流星/ MongoDB find返回一个游标(这是一个React性数据源) 提取将光标转换为数组 注意:但是,Meteor应用程序可以在光标上进行迭代。 因此,当您明确想要数组中的数据时,将使用fetch 错误部分(validatePost) ...

    SpringCloudLearning_forezp.tar.gz

    史上最简单的SpringCloud教程 | 第十四篇: Spring Cloud Gateway初体验 史上最简单的SpringCloud教程 | 第十五篇: Spring Cloud Gateway 之Predict篇 史上最简单的SpringCloud教程 | 第十六篇: Spring Cloud Gateway...

    crails:Web应用程序的C ++ MVC开发的Crails框架

    Crails Framework是一个MVC Web开发框架,旨在为C ++开发人员带来类似Rails的体验。 尽管受到Ruby on Rails的启发,但它却轻巧得多。 它是基于cpp-netlib的HTTP服务器,使用路由系统,MVC设计,C ++编译的模板,...

    ThinkPHP v6.0.7

    内置了高性能的基于标签库和XML标签的编译型模板引擎RESTFul支持-通过REST控制器扩展提供了RESTFul支持,为你打造全新的URL设计和访问体验云平台支持-提供了对新浪SAE平台和百度BAE平台的强力支持,具备“横跨性”和...

    微服务架构和基于容器参考应用程序eShopOnContainers.zip

    这是一个很好的机会,来自社区的拉动请求,例如使用Nancy的新微服务,或者甚至其他语言,如Node,Go,Python或具有MongoDB Azure DocDB兼容性的数据容器,PostgreSQL,RavenDB,Event Store,MySql等。) 数据库...

Global site tag (gtag.js) - Google Analytics