the spec中没有明确说明,尽管脚注中的示例是针对同构数组给出的。
Google搜索无法给出明确的答案。
查看各种API,将内容作为对象而不是同类值/类型返回,然后可以对其进行动态检查。
我个人 能看到的一个异构数组的唯一实际原因是,如果它们包含document
,则它们可能具有不同的字段集。否则,与(同质)document
相比,用户更喜欢array
。
答案 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)]}