`
runfriends
  • 浏览: 228874 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mongo简介——BSON

阅读更多

既然是简介,当然就是一个大纲性质的东西。

内容太多加上时间有限,要分成好几篇发。

 

第一部分,mongodb的数据存储格式——BSON

 

BSON是类似JSON的二进制数据格式,所有数据类型可以分为_ID、字符串、数字、日期时间、大字段blob、数组和自定义类型。

 每个文档保存时,开头字节表示文档的尺寸;每个键值对的键以表示属性类型的数字开头(究竟这些数据类型的数字编码是什么我也没找到相应的资料,有知道的同学请告知。目前只知道7是ObjectID,2是字符串),中间是属性名,属性以null结束,所有属性都由字符串保存;接下来就是键值。

_ID,一个文档只能有一个;如果不指定,MONGO会在保存数据时按如下规则自动生成。

自动生成的_ID类型叫做和ObjectID,一个自动生成的_ID占12字节,开头字节是从公元元年开始的秒数,接下来字节是机器id,接下来字节是进程id,最后字节是进程局部计数器,每创建一个文档,计数器自动增1。

 

mongo的每种数据类型都有一个整数编号。可以使用$type查询命令配置类型编号查询指定文档属性是指定类型编号的那些文档。

 

ObjectId:类型编号是7。默认的文档主键。 

 

字符串:类型编号是2。mongo的字符串必须是UTF8格式保存到文档。

 

数字类型:类型编号是1。mongo支持的数字类型分别是double/int/long,对应的javascript类型是NumberLong NumberInt NumberDouble,mongo不支持定点小数。

 

日期时间:类型编号是9。是带符号的64位整数毫秒数,月份从0开始(即January对应的月份是0,December对应的月份是11),是从1970-1-1午夜开始的协调世界时。

 

布尔型:类型编号是8。取值只有true或false。

 

正则表达式:类型编号是11。可以把正则表达式作为值保存。 

 

数组:没找到类型编号,有知道的朋友请告知。按照javascript或json数组理解即可。

 

文档类型:类型编号是3。 

自定义类型:也就是前面提过的文档嵌套,子文档作为自定义类型存在。

 

函数/代码:类型编号是13。可保存JAVASCRIPT代码。

 

二进制类型:不知道类型编号。可保存二进制数据,相当于RDBMS的blob。

 

空值:类型编号是10。nil(注意这里可不是null也不是NULL了,而是nil)

 

undefined:类型编号是6。表示未定义类型

 

可能是版本的原因,官网给出的类型编号跟我测试的结果不一样。

请看这个url:http://runfriends.iteye.com/blog/1832302

1
0
分享到:
评论

相关推荐

    lua-mongo:用于Lua的MongoDB驱动程序

    当这两种技术结合时,就诞生了“lua-mongo”——一个专门为Lua设计的MongoDB驱动程序,它为Lua开发者提供了与MongoDB交互的强大工具。 lua-mongo是Lua社区中的一款开源项目,它的目标是使Lua程序员能够充分利用...

    MongoDB中的bson介绍和使用实例

    MongoDB 的核心数据结构——文档,是基于 BSON 实现的。这些文档可以看作是无模式(schema-less)的 JSON 对象,允许动态结构,易于适应不断变化的数据需求。每个文档都代表一个独立的记录,可以包含嵌套的文档和数...

    SQL to Mongo Mapping Chart

    9. **BSON语法**:MongoDB查询表达式以JSON对象形式表示,但实际上使用的是一种二进制格式——BSON。 #### 具体查询示例对比 1. **创建表(Create Table)** - **SQL**:`CREATE TABLE USERS (a NUMBER, b NUMBER);...

    robo mongo

    标题中的"robo mongo"指的是Robo 3T,它是一个轻量级且高效的MongoDB管理工具,支持多种操作系统,如Windows、macOS和Linux。Robo 3T提供了与MongoDB服务器的直接连接,支持SSL加密,确保数据传输的安全性。用户可以...

    开源项目-mongodb-mongo-go-driver.zip

    此开源项目——"mongodb/mongo-go-driver",已经进入了Alpha 2阶段,意味着它在功能实现和性能优化上取得了重要的进展。本文将深入探讨该驱动器的主要特性和使用方法。 1. **Go语言兼容性**:MongoDB Go驱动器完全...

    mongo driver

    在这个场景中,我们关注的是C/C++环境下的MongoDB驱动程序——"mongo driver"。 MongoDB C驱动(mongo-c-driver)是官方提供的一个轻量级且高效的库,用于在C或C++应用程序中与MongoDB服务器通信。这个驱动的最新...

    Spring Boot 2.x基础教程:使用MongoDB(csdn)————程序.pdf

    它的数据结构以BSON(Binary JSON)为主,允许存储复杂的数据类型,特别适合Node.js应用程序。MongoDB支持强大的查询语言,类似于面向对象的语法,能实现类似关系数据库的查询功能,并支持索引。 在Spring Boot 2.x...

    mongoDB数据库

    MongoDB使用了类似于JSON的对象表示形式——BSON(Binary JSON)来存储数据,这种格式使得数据的存储更加高效且易于处理。 **BSON格式示例**: ```json {"username":"jack","age":20,"sex":"男"} ``` 这里的数据由...

    mongodb_applied_design_patterns

    - MongoDB使用JSON的扩展——BSON(Binary JSON)格式来存储文档。BSON支持更多的数据类型,例如日期、二进制数据等。 #### 三、设计模式在MongoDB中的应用 **1. 嵌入式文档 vs 引用文档** - **嵌入式文档**:将子...

    java面试——MongoDB面试专题.zip

    - MongoDB使用BSON(Binary JSON)格式存储数据,它支持复杂的数据结构,如嵌入式文档和数组,这使得存储JSON、XML等结构化数据变得简单。 - 嵌入式文档:在同一个文档内存储相关数据,减少了JOIN操作的需求。 - ...

    java连接mongo所需的3个jar包

    总结起来,Java连接MongoDB所需的三个关键jar包——`mongodb-driver`、`mongodb-driver-async`和`mongodb-driver-core`,构成了Java MongoDB驱动程序的核心组件。通过它们,开发者能够轻松地在Java应用中实现与...

    30分钟学MongoDB系列——限定集与大文件存储篇

    接下来是大文件存储,MongoDB虽然支持多种数据类型,但对于BSON格式的文档大小有上限,一般为16MB。对于需要存储大于这个限制的文件,比如视频、大型图片或者大型软件等,MongoDB提供了GridFS作为解决方案。GridFS...

    mongo_db_university:课程作业

    MongoDB使用BSON(Binary JSON)格式存储文档,它是一种高效的数据序列化格式,兼容JSON(JavaScript Object Notation)。 在JavaScript方面,MongoDB提供了MongoDB Shell,这是一个基于JavaScript的命令行工具,...

    PyPI 官网下载 | nameko-mongodb-1.0.3.tar.gz

    《PyPI上的Python库——Nameko-MongoDB详解》 在Python的世界里,PyPI(Python Package Index)是开发者们获取和分享软件包的主要平台。本文将深入探讨一个名为`nameko-mongodb`的库,它可以从PyPI官网下载,版本为...

    databases:使用 orm 深入研究 mongo 和 sql

    在这个项目中,我们将重点关注ORM(对象关系映射)技术在两种不同类型的数据库——MongoDB(文档型数据库)和SQL(关系型数据库)中的使用。ORM是一种编程技术,它允许开发者使用面向对象的编程语言与数据库进行交互...

    springboot集成mongodb增删改查功能源码

    我们将以一个具体的实例——员工表为例,来阐述这一过程。 首先,我们需要理解Spring Boot的核心概念。Spring Boot是Spring框架的一个简化版本,它提供了一种快速开发全新Spring应用的方式。它通过自动配置和起步...

    深入剖析 MongoDB 架构

    在工具方面,MongoDB 提供了一系列管理工具,如 `mongod`(数据库服务器)、`mongos`(路由服务)、`mongo`(命令行工具)以及 `mongorestore` 和 `mongodump`(用于数据备份和恢复)。此外,还有图形化管理工具如 ...

    各种数据库特性及比较

    HDFS 是一个分布式文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件,并且是分布式的,由很多服务器联合起来实现其功能。HDFS 的重要特征包括: * 文件在物理上是分块存储(block),块的大小可以...

Global site tag (gtag.js) - Google Analytics