BSON

BSON（）是一种计算机数据交换格式，主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式，能用来表示简单数据结构、关联数组（MongoDB中称为“对象”或“文档”）以及MongoDB中的各种数据类型。BSON之名缘于JSON，含义为Binary JSON（二进制JSON）。

数据类型和语法 
BSON文档（对象）由一个有序的元素列表构成。每个元素由一个字段名、一个类型和一个值组成。字段名为字符串。类型包括：
 string
 integer（32或64位）
 double（64位IEEE 754浮点数）
 decimal128（128位IEEE 754-2008浮点数；变体），适合作为任意精度为34个十进制数字的数字载体，最大值近似106145
 date（整数，自UNIX时间的毫秒数)
 byte array（二进制数组）
 布林（true或false）
 null
 BSON对象
 BSON数组
 JavaScript代码
 MD5二进制数据
 正则表达式（Perl兼容的正则表达式，即，版本8.41，含UTF-8支持；与Python不完全兼容）

BSON的类型名义上是JSON类型的一个超集（JSON没有date或字节数组类型），但一个例外是没有像JSON那样的通用“数字”（number）类型。

效率 
与JSON相比，BSON着眼于提高存储和扫描效率。BSON文档中的大型元素以长度字段为前缀以便于扫描。在某些情况下，由于长度前缀和显式数组索引的存在，BSON使用的空间会多于JSON。

例子 
一个内容为{"hello":"world"}的文档将存储为：Bson:
  \x16\x00\x00\x00               // 总文档大小
  \x02                           // 0x02 = 类型：String（字符串）
  hello\x00                      // 字段名
  \x06\x00\x00\x00world\x00      // 字段值（值大小，值，空终止符）
  \x00                           // 0x00 = 类型：EOO（'end of object'，对象结尾）

参见 
 
 JSON
 
 （二进制JSON）
 
 Protocol Buffers
 
 Thrift
 MessagePack
 文件導向的數據庫
 MongoDB
 ASN.1
 （WBXML）

参考文献

外部链接 
 BSON Specification
 BSON documentation on the MongoDB website
 bsondump tool included with MongoDB

数据序列化格式
面向文档的数据库
JSON