zoukankan      html  css  js  c++  java
  • mongoDB学习初步总结

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


  • 相关阅读:
    python 字符串替换功能 string.replace()可以用正则表达式,更优雅
    windows 10 如何设定计划任务自动执行 python 脚本?
    win10 设定计划任务时提示所指定的账户名称无效,如何解决?
    pandas数据分析输出excel产生文本形式存储的百分比数据,如何处理?
    coinmarketcap前20之cardano卡尔达诺(ADA艾达币)
    【SpringMVC】参数绑定
    【SpringMVC】入门
    【Hibernate】 二级缓存及查询缓存
    【Hibernate】事务处理
    【Hibernate】抓取策略
  • 原文地址:https://www.cnblogs.com/bugmaster/p/4186698.html
Copyright © 2011-2022 走看看