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


158

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


嗨,伊凡(Ivan),请参阅此链接,其中包含JSON和BSON之间的深入比较参考:educba.com/json-vs-bson
Nuwa,

@Nuwa Ivan没有问这个问题,那是Akshat
UuDdLrLrSs

Answers:


155

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

实际上,在使用MongoDB时,您无需了解BSON的任何知识,只需要在构造文档时使用语言的本机类型及其驱动程序提供的类型(例如ObjectId),它们就会被映射到驾驶员选择合适的BSON类型。


2
因此,如果mongoDb将文档存储为bson,则在查询数据库时返回的类型是什么?它们是作为json返回的吗?还是按原样返回bson?
Akshat Jiwan Sharma 2012年

13
不,您所用语言的MongoDB驱动程序负责将文档转换为适合您所用语言的数据类型。尽可能使用本机数据类型。
JohnnyHK

2
这是否意味着,如果我使用JavascriptBSON文档中检索数据,我将不会获得任何数据类型差异,就像使用C / C ++进行检索时一样,即如果没有小数,数字将被视为整数
Abhisekp 2014年

1
@abhisekp根据JohnnyHK的解释和我最近的经验,我认为您所说的是正确的。
nxmohamad

BSON是否会返回列字段的确切数据类型?还是返回所有类型的String?
mRhNss

45
  • 什么是BSON

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

  • JSON有何不同?

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

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

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

资料来源:http : //bsonspec.org/


这与代表二进制JSON数据(在postgresql中分解)的数据类型jsonb相同吗?
PirateApp

13

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


12

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

BSON扩展了JSON模型,以提供JSON 中不支持的其他数据类型,例如Date和Binary,还提供了有序字段,以使其能够有效地在不同语言中进行编码和解码。 

换句话说,我们可以说   BSON只是二进制JSON  (JSON的超集,其中包含更多数据类型,最重要的是二进制字节数组)。

Mongodb用作JSON的序列化格式,包括用于存储和访问文档的编码格式。简而言之,我们可以说BSON是JSON数据的二进制编码格式。

有关更多mongoDB文章:https ://om9x.com/blog/bson-vs-json/


链接已断开
PlsWork '19


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.