mongodb初体验
如果要选出近两年最火的web技术的话,NOSQL必定为其中之一!鉴于业务量发展的压力,最近项目组也希望完全迁移至NOSQL,所以也关注下NOSQL的知识(之前也有关注,但只是看看介绍而已,没有深入了解),这期间注意到mongodb。不同于Cansandra的key-value形式,mongodb的数据是以文档为单位存储的,mongo中所谓的的文档就是类似于json格式的数据(在mongodb中叫bson),文档是存放于集合(collection)之下的,实际应用中,这里的集合就相当于关系数据库中的表,而一个文档就相当于表中的一行数据,不过mongodb的好处是,collection下可以存放任何符合bson格式的文档,而关系数据库的表中存放的数据是预定义好的,不可变的(几乎),这一点上mongodb非常符合我们不断变化的业务。
mongodb的安装非常简单:
- 先到http://www.mongodb.org/downloads下载最新稳定版的mongodb包,解压到你希望存放的任何目录;打开看看mongodb目录看看,里面的文件很少,只有bin目录下有10个可执行文件,其中mongod.exe就是mongodb核心服务,mongo.exe是其一个命令行客户端,简单称之为mongo shell。
- 如果使用的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:
- 进入mongodb/bin目录,运行mongodb.exe,这样mongodb服务就启动了。
- 再打开mongo.exe,启动mongo shell,默认它会自动连接到本地mongodb服务,并默认使用一个名字为test的数据库,并将database实例赋给db变量(mongo shell里使用的是javascript脚本操作数据库),如下:
- 先插入一条是数据试试,输入命令:db.picture.insert({picId:1,picSize:1999201,deleted:0}); 中间的picture就是我们指定的一个集合,而insert的参数就是我们要插入的文档数据,再输入db.picture.find()查询看看数据是否写入,截图如下:
查询结果就是我们刚刚插入的一条记录,不过多了一个"_id"属性,这个是mongodb自动生成的,不可删除,mongodb会在这个字段上建索引。另外注意,文档必须是某一个集合之下的,picture是之前并不存在的集合,mongodb如果发现集合不存在会自动创建一个集合。
- 插入另外一个结构完全不同的文档试试,执行db.picture.insert({a:1,b:2}),再执行db.picture.find()查询看看:
picture集合下有两个完全不同的文档。
- 弄个复杂点的(在mongo shell里是可以执行javascript脚本的): for(i=2;i<10;i++)db.picture.insert({picId:i,picSize:10000,deleted:i%2});
然后在查询看看:
帅!
- 为了适合客户需求,我们要给图片添加个短地址,短地址的规则是:一级图片类别/二级图片类别/图片名,看看我如何给图片动态添加个字段的: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
分享到:
相关推荐
关于node.js初体验. 如何搭建并完成一个简单的后台, 配合mongodb数据库, 实现信息的增删改查功能
第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 小结 ...
流星/ MongoDB find返回一个游标(这是一个React性数据源) 提取将光标转换为数组 注意:但是,Meteor应用程序可以在光标上进行迭代。 因此,当您明确想要数组中的数据时,将使用fetch 错误部分(validatePost) ...
史上最简单的SpringCloud教程 | 第十四篇: Spring Cloud Gateway初体验 史上最简单的SpringCloud教程 | 第十五篇: Spring Cloud Gateway 之Predict篇 史上最简单的SpringCloud教程 | 第十六篇: Spring Cloud Gateway...
Crails Framework是一个MVC Web开发框架,旨在为C ++开发人员带来类似Rails的体验。 尽管受到Ruby on Rails的启发,但它却轻巧得多。 它是基于cpp-netlib的HTTP服务器,使用路由系统,MVC设计,C ++编译的模板,...
内置了高性能的基于标签库和XML标签的编译型模板引擎RESTFul支持-通过REST控制器扩展提供了RESTFul支持,为你打造全新的URL设计和访问体验云平台支持-提供了对新浪SAE平台和百度BAE平台的强力支持,具备“横跨性”和...
这是一个很好的机会,来自社区的拉动请求,例如使用Nancy的新微服务,或者甚至其他语言,如Node,Go,Python或具有MongoDB Azure DocDB兼容性的数据容器,PostgreSQL,RavenDB,Event Store,MySql等。) 数据库...