什么是BSON,它与JSON到底有什么不同?

问题描述 投票:115回答:5

我只是从MongoDB开始,我注意到的一件事是它使用BSON内部存储数据。但是,关于BSON是什么以及在MongoDB中如何使用BSON的文档尚不清楚。有人可以向我解释吗?

json mongodb bson nosql
5个回答
123
投票

BSON是MongoDB在将文档存储在集合中时使用的类似JSON的文档的二进制编码。它增加了对JSON不支持的数据类型(如日期和二进制数据)的支持。

实际上,在使用MongoDB时,您不必了解BSON,只需要在构造文档时使用语言的本机类型及其提供的驱动程序类型(例如ObjectId),即可将它们映射驱动程序将其转换为适当的BSON类型。


29
投票
  • 什么是BSON

    BSON [bee·sahn],Bin­ary JSON的缩写,是经过二进制编码的类似于JSON的文档的序列化。

  • JSON有何不同?

BSON被设计为在空间上高效的,但是在某些情况下,其效率没有比JSON高得多。在某些情况下,BSON比JSON使用更多的空间。其原因是BSON的另一个设计目标:可遍历性。 BSON在文档中添加了一些“额外”信息,例如字符串和子对象的长度。这样可以使遍历更快。

BSON还被设计为快速编码和解码。例如,整数存储为32(或64)位整数,因此不需要在文本之间进行解析。对于小整数,此方​​法比JSON使用更多的空间,但解析速度要快得多。

除了紧凑之外,BSON添加了JSON中不可用的其他数据类型,特别是BinDataDate数据类型。

来自http://bsonspec.org/


12
投票

MongoDB在后台表示称为BSON的二进制编码格式的JSON文档。 BSON扩展了JSON模型,以提供其他数据类型,并有效地在不同语言中进行编码和解码。


10
投票

MongoDB以二进制编码格式表示JSON文档,因此我们将其称为幕后BSON

BSON扩展了JSON模型,以提供JSON中不支持的其他数据类型,例如Date和Binary,并且还提供了有序字段,以便有效地在不同语言中进行编码和解码。 换句话说,我们可以说

BSON只是二进制JSON

(JSON的超集,其中包含更多数据类型,最重要的是二进制字节数组)。

Mongodb用作JSON的序列化格式

用于存储和访问文档的编码格式一起提供。我们可以简单地说BSON是JSON数据的二进制编码格式。
有关更多mongoDB文章:https://om9x.com/blog/bson-vs-json/


5
投票
通过在JSON之上使用BSON编码,MongoDB能够在原始格式的JSON文档内的值之上创建索引。这有助于运行高效的分析查询,因为NoSQL系统因不支持索引而闻名。
© www.soinside.com 2019 - 2024. All rights reserved.