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的基本用法。待续···


mongoDB学习初步总结的更多相关文章

  1. MongoDB学习笔记(2):数据库操作及CURD初步

    MongoDB学习笔记(2):数据库操作及CURD 数据库操作 创建数据库 首先MongoDB中数据库的创建和数据库的切换都是使用命令,USE DATABASE,如果要切换的数据库不存在则会进行创建, ...

  2. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  3. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  4. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  5. MongoDB学习记录

    一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...

  6. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  7. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  8. MongoDB学习:(一)MongoDB安装

    MongoDB学习:(一)MongoDB安装 MongoDB介绍:     直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...

  9. MongoDB学习(四)客户端工具备份数据库

    在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...

随机推荐

  1. codeforces 435 B. Pasha Maximizes 解题报告

    题目链接:http://codeforces.com/problemset/problem/435/B 题目意思:给出一个最多为18位的数,可以通过对相邻两个数字进行交换,最多交换 k 次,问交换 k ...

  2. django错误 - Reason given for failure: CSRF cookie not set.

    练习Django表单提交时遇到如下问题: 在网上各种查找,终于找到了解决方法. 1.在from 表单中添加 {% csrf_token %} 2.在视图中添加 from django.template ...

  3. lucene倒排索引瘦身的一些实验——merge的本质是减少cfx文件 变为pos和doc;存储term vector多了tvx和tvd文件有337M

    store NO 压缩后的原始数据 原始数据大小 索引大小 索引时间 单词搜索时间 266 791 594 176 0.2 文件组成见后 运行forceMerge(3)后 merge的本质是减少cfx ...

  4. NOIP提高组2006-金明的预算方案

    链接 分析:依赖型0-1背包问题,对于一个主件,可以挂0个,1个,2个附件,所以最终为4种状态情况下的最大值. #include "iostream" #include " ...

  5. 一梦浮生2012 IOS高级进阶目录

    一梦浮生2012 精通iphone的UI开发,能熟练操作复杂表视图,熟练使用图层技术, 可以自定义UI控件,使用类别扩展系统控件功能; 擅长通讯技术,熟悉各种通信协议,精通xml, json, 二进制 ...

  6. 6-6 Haar特征3

    B区域是包含AB这样两部分的.C区域是包含A和C这样两部分的.B区域和C区域它描述的是一个横条和一个竖条.D区域是四个方块之和. #haar 1 什么是haar? 特征 = 像素 运算 ->结果 ...

  7. File System Programming --- (二)

    File System Basics The file systems in OS X and iOS handle the persistent storage of data files, app ...

  8. EasyUI 扩展自定义EasyUI校验规则 验证规则(常用的)

    $.extend($.fn.validatebox.defaults.rules, { CHS: { validator: function (value, param) { return /^[\u ...

  9. DataGridTemplateColumn 如何获取内部控件

    WPF中有时候我们不使用DataGridTextColumn 而使用用途更加宽广的DataGridTemplateColumn 但是用途多的东西当然也更复杂. 这里说下如何取DataGridTempa ...

  10. P5110 块速递推

    传送门 为啥我就没看出来有循环节呢-- 打表可得,这个数列是有循环节的,循环节为\(10^9+6\),然后分块预处理,即取\(k=sqrt(10^9+6)\),然后分别预处理出转移矩阵\(A\)的\( ...