zoukankan      html  css  js  c++  java
  • MongoDb数据结构详解

    首先,向数据库插入一条bjson数据

    首先是定义文档,然后使用admin用户名密码登录,进入test数据库,向test数据库中插入此文档(“表名称和表中的记录”)

    插入结果,查看mongoVUE如下图所示

    从上图可以看出系统自带的三个数据库,local,admin,test,在加入一条记录的时候,会自动生成_id的自动标识。

    我们再添加图片,可以使用mongoVUE添加,如下图所示。

    Collections:在mongodb中叫做集合,是文档的集合。无模式,可以存储各种各样的文档。类似mysql中的表。

    在关系型数据库中,关系数据库的每一张表就是一个关系模型的映射,每张表的字段就是对应的实体的属性和主外键的集合,每个字段需要提前定义。

    Document:这里的user集合(“表”)有一个document(document可以理解为mysql中的记录)。文档是mongodb保存数据的基本单元。数据的存储结构为BSON格式,也就是我们开始添加的文档,key value键值对类型。

    文档中保存到数据类型可以为:null、boolean、String、Object、32位整数、64位整数、64位浮点数、日期、正则表达式、js代码、二进制数据、数组、内嵌文档、最大值、最小值、未定义类型。

    GridFS:因为bson对象的大小有限制,不适合存储大型文件,GridFS文件系统为大型文件提供了存储的方案,GridFS下的fs保存的是图片、视屏等大文件。

    无论是bson对象还是GriFs中存储的大文件,我们发现当添加一个文档的时候,会自动的添加_id ,不同的是图片添加后会自动的加上_id,chunkSize,md5,legnth,aliases等,这些属性是我们上传完图片后,mongodb分析后自动添加的,系统自动保存。

    MongoDB的数据类型介绍

     

      参考MongoDB官网:https://docs.mongodb.com/manual/reference/bson-types/

      MongoDB文档存储是使用BSON类型,BSON(BSON short for Bin­ary JSON, is a bin­ary-en­coded seri­al­iz­a­tion of JSON-like doc­u­ments)是二进制序列化的形式。类如JSON,同样支持内嵌各种类型。

      

    TypeNumberAliasNotes
    Double 1 “double”  
    String 2 “string”  
    Object 3 “object”  
    Array 4 “array”  
    Binary data 5 “binData”  
    Undefined 6 “undefined” Deprecated.
    ObjectId 7 “objectId”  
    Boolean 8 “bool”  
    Date 9 “date”  
    Null 10 “null”  
    Regular Expression 11 “regex”  
    DBPointer 12 “dbPointer” Deprecated.
    JavaScript 13 “javascript”  
    Symbol 14 “symbol” Deprecated.
    JavaScript (with scope) 15 “javascriptWithScope”  
    32-bit integer 16 “int”  
    Timestamp 17 “timestamp”  
    64-bit integer 18 “long”  
    Decimal128 19 “decimal” New in version 3.4.
    Min key -1 “minKey”  
    Max key 127 “maxKey”

      重点介绍几个类型,

      ObjectId类型:这是MongoDB生成的类似关系型DB表主键的唯一key,生成快速。具体由12个字节组成:

      前4个字节是unix秒,3个字节的机器标识符(为了分布式下的主键唯一),2个字节的进程id,3个字节的计数器数字

    • a 4-byte value representing the seconds since the Unix epoch,
    • a 3-byte machine identifier,
    • a 2-byte process id, and
    • a 3-byte counter, starting with a random value.         

      MongoDB的设计之初就是要做分布式数据库。从ObjectId唯一主键的生成上,值得分布式系统设计人员参考。

      3个字节的机器标识符,表示MongoDB实例所在机器的不同;2个字节的进程id,表示相同机器的不同MongoDB实例。再加上时间戳和随机数(3个字节随机数,同一秒上,理论上可以有2^24次个插入),很大程度上保证了ObjectId的唯一性。

      

      String类型:

        BSON字符串都是UTF-8编码。

      Timestamps类型:

        BSON具有内部MongoDB使用的特殊时间戳类型,并且不与常规Date类型相关联。 时间戳值是64位值,其中:

        第一个32bit是unix时间戳秒;

        第二个32bit是当前秒的递增操作数。

       可以保证一个mongod实例下,timestamps总是唯一的。

      Date类型:

        BSON Date是一个64bit有符号整数,表示自Unix纪元以来的毫秒数(1970年1月1日)。 

  • 相关阅读:
    ABAP 销售范围
    C语言深度剖析自测题8解析
    Ubutun13.10下安装fcitx
    各种Web服务器与Nginx的对比
    Hadoop2.2.0在Ubuntu编译失败解决方法
    网站上在给出邮箱地址时不直接使用@符号的原因
    IPython notebook在浏览器中显示不正常的问题及解决方法
    input只读效果
    阿里实习生电面题目:输出给定字符串的全部连续子串
    DNS 放大
  • 原文地址:https://www.cnblogs.com/williamjie/p/9511880.html
Copyright © 2011-2022 走看看