bsonspec.org列出了一组二进制子类型,包括通用二进制(\ x00),函数(\ x01),UUID(\ x04),MD5(\ x05),用户定义(\ x80)。 问题是:
答案 0 :(得分:1)
1)IIRC,子类型1未在MongoDB中使用。它可能应该被弃用。我不记得它的历史,如果有人请评论,否则我认为它是古老的。
2)规范文档可能更清楚,0x80 - 0xff都是合法的,并且该范围是为用户定义的子类型保留的。或者为预定义类型保留小于0x80。
一般来说,目前,MongoDB不会在BinData子类型的语义上做任何事情,它会将它们视为用户数据。 (除非子类型有所不同,否则服务器绝对不会认为两个BinData值是相同的。出于查询目的。)此外,shell还有一些能够为那些人打印MD5和UUID以及帮助器的能力。我相信。
也就是说,将BSON ex-Mongo用于需要序列化某些数据的任何事情都是完全合理的,特别是如果有些动态类型,并且工具应该期望值是合理的,如果是一个暗示的子类型(例如UUID子类型应该是16字节值,即使MongoDB服务器当前并不真正关心它。
如果工具不允许> 0x80它可能需要调整。
答案 1 :(得分:0)
仅供参考,我们在本文档中提到了0x03
子类型,作为传统的UUID类型:https://studio3t.com/knowledge-base/articles/mongodb-best-practices-uuid-data/