BSON阵列是异质的还是同质的?

时间:2018-07-17 08:45:36

标签: bson

the spec中没有明确说明,尽管脚注中的示例是针对同构数组给出的。

Google搜索无法给出明确的答案。

查看各种API,将内容作为对象而不是同类值/类型返回,然后可以对其进行动态检查。

我个人 能看到的一个异构数组的唯一实际原因是,如果它们包含document,则它们可能具有不同的字段集。否则,与(同质)document相比,用户更喜欢array

1 个答案:

答案 0 :(得分:0)

确实 是这样。

它表示 document 由以空字节开头的元素组成

document    ::=     int32 e_list "\x00"

文档由元素组成

e_list  ::=     element e_list

并且元素可以是BSON支持的任何类型

element     ::=     "\x01" e_name double    64-bit binary floating point
    |   "\x02" e_name string    UTF-8 string
    |   "\x03" e_name document  Embedded document
 ....<snip>....

页面底部的第一条注释说明,列表只是带有魔术升序字符串键的简单文档。

  

Array-数组的文档是具有以下内容的常规BSON文档:   键的整数值,从0开始并继续   按顺序。例如,数组['red','blue']将被编码   作为文档{'0':'red','1':'blue'}。

这样

BSON将愉快地序列化{"Key1":[12, "12", 12.1, "a string", Binary(0x001232)]}