首先,向数据库插入一条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,同样支持内嵌各种类型。

  

Type Number Alias Notes
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日)。

MongoDb数据结构详解的更多相关文章

  1. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  2. [转]Redis内部数据结构详解-sds

    本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被 ...

  3. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  4. redis 五种数据结构详解(string,list,set,zset,hash),各种问题综合

    redis 五种数据结构详解(string,list,set,zset,hash) https://www.cnblogs.com/sdgf/p/6244937.html redis 与 spring ...

  5. 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  6. 5种Redis数据结构详解

    本文主要和大家分享 5种Redis数据结构详解,希望文中的案例和代码,能帮助到大家. 转载链接:https://www.php.cn/php-weizijiaocheng-388126.html 2. ...

  7. 探索Redis设计与实现6:Redis内部数据结构详解——skiplist

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  8. 探索Redis设计与实现7:Redis内部数据结构详解——intset

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  9. 探索Redis设计与实现5:Redis内部数据结构详解——quicklist

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

随机推荐

  1. 在Code First中自动创建Entity模型

    之前我在博客文章中介绍过如何使用Code First来创建数据库,通过CodeFirst的方式,可以大幅的减少开发人员的工作量,比传统的先创建库再ORM的方式简单了不少.但是,很多时候,特别是一些MI ...

  2. 分布式架构高可用架构篇_activemq高可用集群(zookeeper+leveldb)安装、配置、高可用测试

    原文:http://www.iteye.com/topic/1145651 从 ActiveMQ 5.9 开始,ActiveMQ 的集群实现方式取消了传统的Master-Slave 方式,增加了基于Z ...

  3. ExtJS 4 在Ext.tab.Panel中使用Ext.ux.IFrame打开url指向的网页

    ext-4.2.1.883\examples\ux\IFrame.js ext-4.2.1.883\examples\ux\TabCloseMenu.js 复制到 \Scripts\ext-4.2.1 ...

  4. asp.mvc展示model

    1. ASP.Net MVC 3 Model 简介 通过一简单的事例一步一步的介绍2. ASP.Net MVC 3 Model 的一些验证 MVC 中 Model 主要负责维持数据状态,将数据从数据存 ...

  5. iOS:扩展UIColor,支持十六进制颜色设置

    来自转载:http://my.oschina.net/leejan97/blog/307491 摘要: 可以直接使用十六进制设置控件的颜色,而不必通过除以255.0进行转换 #define UICol ...

  6. 安装完office2016 64位后,在安装visio时,报错,无法安装,

    安装环境要求: 系统要求:win8,win10等: office要求:sw(批量版)不能和cn(零售版).365版混装.-------重点注意事项 一定要注意批量版和零售版的区别,各版本之间绝对不允许 ...

  7. pgmagick,pil不保存图片并且获取图片二进制数据记录

    PIL和pgmagick都是python中图像处理的库,只不过PIL功能更强大 pgmagick和PIL中对数据进行调整后经常需要调用write或者save方法保存图片,然后在读取图片的内容,这样很麻 ...

  8. c# word 操作

    public class WordOperate { #region 新建Word文档 /// <summary> /// 动态生成Word文档并填充内容 /// </summary ...

  9. css - 公众号样式

    /* * @Author: WJ_LONG * @Date: 2018-09-06 15:32:06 * @Last Modified by: WJ_LONG * @Last Modified tim ...

  10. 炫酷的sublimeText开发工具 快捷键总结

     sublimeText3绝对是写前端程序的利器.占内存小.启动快.代码提示功能齐全,界面酷炫并且再也不怕断电.了 网上搜罗一些快捷键总结一下.先来张图: (事实上sublimeText3也能够写 ...