`
pxlfxl2
  • 浏览: 51073 次
  • 性别: 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数据库, 实现信息的增删改查功能(在这里我偷了个小懒,就实现了查询和增加功能, 后边再完善叭), 具体的操作过程在博客中写的非常详细, 包括代码有块...

    头歌springboot初体验

    在"头歌springboot初体验"中,我们可以探讨以下几个关键知识点: 1. **起步依赖(Starter Dependencies)**:Spring Boot通过起步依赖管理项目中的依赖。例如,如果你想使用Spring MVC进行Web开发,只需添加`spring...

    Web基础——WebApp之初体验(三)

    在本篇关于“Web基础——WebApp之初体验(三)”的文章中,我们将深入探讨Web应用程序(WebApp)的关键概念和技术,以及它们如何为用户提供便捷的在线体验。WebApp是互联网技术的重要组成部分,它们允许用户在浏览器...

    feapder 爬虫框架初体验代码

    在这个"feapder爬虫框架初体验代码"中,我们将深入探讨Feapder的核心特性和基本用法。 1. **Feapder简介** Feapder是一个轻量级的爬虫框架,它提供了丰富的内置功能,如自动处理反爬策略、数据持久化、任务调度等...

    Zula-online-shopping:基于Mongodb,NodeJS和Express的项目

    【标题】"Zula在线购物"是一个利用现代Web技术构建的电子商务平台,它结合了Mongodb作为数据库系统,NodeJS作为后端服务器平台,以及Express作为应用框架。这个项目展示了如何将这些技术融合在一起,创建一个功能...

    egg-admin-back:egg-admin后台管理系统后端,基于eggjs+mongodb

    4. **错误处理**:统一的错误处理机制,确保生产环境的稳定性和用户体验。 5. **日志记录**:记录操作日志,便于追踪和分析系统运行情况。 **开发流程** 1. **初始化项目**:使用Egg.js CLI创建项目,并配置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 小结 ...

    电子商务网站建设课程设计报告

    1. 大纲规划:在设计电子商务网站之初,应先拟定一个详细的设计大纲。这包括需求分析、功能模块划分、技术选型、设计流程和时间安排等。需求分析是明确网站需要实现的目标和功能的基础,功能模块划分则是将整体目标...

    绿色的生活服务平台购物商城模板html源码(购物车数字可变,金额不变).zip

    数据库(如MySQL或MongoDB)也是必不可少的,用于存储商品信息、用户数据和订单详情。 此外,考虑到SEO(搜索引擎优化),模板应包含元标签、关键词和描述,以帮助搜索引擎理解和索引网站内容。同时,确保网站的...

    kaixinnongchang.rar_social_农场

    开心农场在设计之初,就面临着如何实现用户之间的实时交互问题。这需要强大的服务器支持,以处理大量并发的请求,确保玩家能在同一时间看到彼此的动作,如种植作物、偷取朋友的果实等。这就涉及到分布式系统设计,...

    带聊天室网络版的五子棋

    此项目旨在提供一个娱乐与社交相结合的平台,虽然功能可能尚未完备,但其核心特性已经初具雏形。 【描述】:“带有聊天功能的五子棋”意味着这款游戏不仅实现了基本的五子棋游戏逻辑,还增加了在线聊天室功能。这...

    fullwardrobe_nodejs

    - 引入前端框架(如React或Vue.js)实现单页应用,提升用户体验。 这个项目对于初学者和经验丰富的开发者都是一个很好的学习资源,通过它,你可以深入了解这些技术的结合使用,以及如何构建一个完整的Web应用。同时...

    计算机毕业设计-学生毕业设计-pan

    《计算机毕业设计-学生毕业设计-pan》是一个以Java为主要编程语言的项目,适用于软件开发人员,无论是初入职场还是在校学生,都能从中受益。这个项目不仅提供了丰富的学习材料,而且还是一个理想的实践平台,帮助...

    ThinkPHP3.2.3完全开发手册

    - **MongoDB支持增强**:对于MongoDB的支持更加完善,提供了更多的特性和API,便于开发者进行NoSQL数据库的操作。 - **模型类增强**:模型类新增了许多有用的功能,比如支持复合主键、多表操作等,极大地丰富了数据...

    网上商城需求分析文档汇总

    5. **用户体验(UX)和界面(UI)设计**:分析文档可能会涉及用户界面的布局、色彩、图标、按钮设计等,以及如何通过直观易用的界面提升用户体验。 6. **安全性与隐私保护**:分析中会讨论如何保障用户的个人信息安全,...

Global site tag (gtag.js) - Google Analytics