我只是从MongoDB开始,我注意到的一件事是它使用BSON在内部存储数据。但是,关于BSON是什么以及在MongoDB中如何使用BSON的文档尚不清楚。有人可以向我解释吗?
我只是从MongoDB开始,我注意到的一件事是它使用BSON在内部存储数据。但是,关于BSON是什么以及在MongoDB中如何使用BSON的文档尚不清楚。有人可以向我解释吗?
Answers:
BSON是MongoDB在将文档存储在集合中时使用的类似于JSON的文档的二进制编码。它增加了对JSON不支持的数据类型(如日期和二进制)的支持。
实际上,在使用MongoDB时,您无需了解BSON的任何知识,只需要在构造文档时使用语言的本机类型及其驱动程序提供的类型(例如ObjectId),它们就会被映射到驾驶员选择合适的BSON类型。
什么是BSON?
BSON [bee·sahn]是Binary JSON的缩写,是类似于JSON的文档的二进制编码序列化。
与JSON有何不同?
BSON在空间上被设计为高效的,但在某些情况下,其效率不比JSON高。在某些情况下,BSON比JSON使用更多的空间。原因是BSON的另一个设计目标:可遍历性。BSON将一些“额外”信息添加到文档中,例如字符串和子对象的长度。这样可以使遍历更快。
BSON还被设计为快速编码和解码。例如,整数存储为32(或64)位整数,因此不需要在文本之间进行解析。对于小整数,此方法比JSON使用更多的空间,但解析速度要快得多。
除了紧凑之外,BSON还添加了JSON中不可用的其他数据类型,特别是BinData和Date数据类型。
资料来源:http : //bsonspec.org/
MongoDB在幕后以称为BSON的二进制编码格式表示JSON文档。BSON扩展了JSON模型,以提供其他数据类型,并有效地在不同语言中进行编码和解码。
MongoDB 以二进制编码格式表示JSON文档,因此我们在后台将其称为BSON。
BSON扩展了JSON模型,以提供JSON 中不支持的其他数据类型,例如Date和Binary,还提供了有序字段,以使其能够有效地在不同语言中进行编码和解码。
换句话说,我们可以说 BSON只是二进制JSON (JSON的超集,其中包含更多数据类型,最重要的是二进制字节数组)。
Mongodb用作JSON的序列化格式,包括用于存储和访问文档的编码格式。简而言之,我们可以说BSON是JSON数据的二进制编码格式。
有关更多mongoDB文章:https ://om9x.com/blog/bson-vs-json/
通过在JSON之上使用BSON编码,MongoDB能够在原始格式的JSON文档内的值之上创建索引。这有助于运行高效的分析查询,因为NoSQL系统因不支持索引而闻名。
这篇相对简短的文章很好地解释了BSON和JSON:讨论了JSON的一些问题,发明BSON的原因,与JSON相比解决了哪些问题以及如何使您受益。
https://www.compose.com/articles/from-json-to-bson-and-back/
在我的用例中,该文章告诉我,对我而言,序列化为JSON可以使用,而我不需要序列化为BSON