What?

  最受欢迎的非关系型数据库之一。面向文档的数据库,在存储乎数据方面与关系型数据库有着本质的区别。

Why?  

  简单易用
  对多变的业务需求,适应性强于SQL型DB
  性能
  复制
  索引
  分片
  丰富的查询
  灵活的数据模型
  毫不逊色的速度
  海量数据下表现好
  对程序员友好,但是是DBA的噩梦,维护性不佳

构成

  相对于SQL数据库 行-> 表 -> 数据库 而言,mongoDB的组织结构是: document -> collection -> DataBase

  其中的document , collection ,近似对应了SQL型数据库中 行 ,表 的概念。

Document

  •   { 'name' : 'tom' , 'age': 21 , 'email': 'tom@123.com' }

    上例则是一个 document 对象。document使用 key:value (类似于JSON格式)的形式来组织数据的,document中有以下注意:

  • 文档对 多个 key:value 的顺序敏感:例如:

        { 'name' : 'tom' , 'age': 21 , 'email': 'tom@123.com'
        { 'name' : 'tom' ,  'email': 'tom@123.com','age': 21  }

    上面两个文档会被认为是两个不同的文档。

  • 系统会为每一个文档添加一个名为_id 的键。这个键是系统对属于同一个colletiondocument的唯一身份标识。
      _id的值是mongoDB 中的一种特殊的类型:ObjectID()
    除非你在文档里给出了并指定了这个属性的值,否则mongoDB会在文档存入数据库的时候为其创建一个_id键。

  • key

    • key 不能重复
    • 文档的 key 为 string 类型
    • 文档对 key 的大小写敏感
  • value
    • 文档中 value 的值可以为多种类型
    • 值可以是一个文档(内嵌文档)

collection

    • 相当于关系型数据库的 table
    • collection 是无模式的:也就是说,结构不同的 document 可以属于同一个collection,而这在关系型数据库是做不到的,正如你无法将结构不同的两行 放到同一张表中。

    • ok,既然我们可以将不同结构的document放到同一个collection中 ,为什么我们还需要多个collection呢?

    • 实际上,我们应该将同一种类型的document 放到一个collection中,但是这并不意味着我们对数据(document)的结构由强烈的要求,mongoDB可以让我们更加灵活的管理数据。对文档分类意味着产生多个collection 这样也可以提高我们的访问速度,降低服务器的负担;同时还能让我们更好的组织和管理数据(mongoDB的DBA上辈子都是折翼的天使)。

    • mongoDB支持多种多样的数据类型,其主要的是对JSON 类型的数据可扩展,总结如下:

      • null
      • bool
      • int32
      • int64
      • float64
      • string
      • 符号
      • ObjectId()
      • date
      • 表示为从纪元开始的毫秒数
      • 正则表达式
      • javascript代码
      • 二进制数据
      • 最大值(BSON)
      • 最小值(BSON)
      • undefined
      • array
      • cocument

      下一篇讲 mongoDB 的shell的基本用法。待续···


最新文章

  1. Linux中vim的简单配置
  2. PHP入门教程-开发环境搭建
  3. NoSQL之【MongoDB】学习(二):DML和查询操作说明
  4. Eclipse中怎么设置Add cast to Clazz 快捷键
  5. centos6.5上安装Openfire 4.0.3
  6. 增加Activity Monitor中的作业保存数量
  7. 要学JavaScript!进来看吧,反正不花钱!~
  8. 如何在HTML5 图片预览
  9. 【Python】32. Longest Valid Parentheses
  10. c语言中gets ,getschar 和fgets 的用法及三者之间的差别
  11. Webdriver+testNG+ReportNG+Maven+SVN+Jenkins自动化测试框架的pom.xml配置
  12. Js 框架之Vue .JS学习记录 ① 与Vue 初识
  13. Spring Boot 2 - 使用CommandLineRunner与ApplicationRunner
  14. js获取元素位置和style的兼容性写法
  15. 关于SQL Server中的系统表之一 sysobjects
  16. MacOS High Sierra 引起 VirtualBox Vagrant 同步慢
  17. 安装httpd过程,将网站部署到httpd过程
  18. Android 开发工具类 36_ getSimSerial
  19. Sublime Text下使用SFTP/FTP插件
  20. Android.mk 用法介绍

热门文章

  1. SQL Server2005+、MySQL、Oracle 数据库字典生成工具
  2. LA-2678 (尺取法)
  3. Echarts饼状图
  4. Map集合的几种遍历方式
  5. 使用Navicat连接MySQL出现1251错误
  6. JSON --- 一种轻量级的数据交换格式
  7. LNMP+Zabbix的安装与部署
  8. 【旧文章搬运】无Device的驱动如何通信
  9. Prepare for Mac App Store Submission--为提交到Mac 应用商店做准备
  10. SpringBoot整合Ribbon注入RestTemplate实例找不到原因