如何使用 mongocxx 驱动程序将 GUID 追加为 bsoncxx::types::b_oid 到文档?



我已经对旧驱动程序做了一些工作,现在我正在升级到新的驱动程序。但是我遇到了一个问题。 我正在尝试将 GUID 附加到基本文档,但在新驱动程序中只允许 12 字节长度的二进制数据。 在旧版驱动程序中,它接受 16 字节数据,GUID 已转换为 16 字节。 是否可以将 GUID 转换为长度为 12 的字节数组?

typedef struct _GUID {
unsigned long  Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char  Data4[ 8 ];
} GUID;

GUID 插入代码:

void insert_guid(std::string name, const GUID& guid)
{
convertGUIDtoBinary( guid, binaryGuidData );    //Can't convert to 12 byte. It will convert to 16 byte length
bsoncxx::types::b_oid oId;
oId.value = bsoncxx::oid(binaryGuidData, 12);   //How to make it 12 byte length?
bsoncxx::builder::basic::document  _builder;
_builder.append(kvp(name, oId));
}

拜托,如果有人可以帮助我,谢谢。

不能对 16 字节 GUID 使用b_oid,因此请改用b_binary类型。 如果您确定您的 UUID 符合 RFC-4122(每个字段中的大端(,并且您希望将它们与其他二进制数据区分开来,则可以使用二进制子类型k_uuid。 或者,您可以只使用二进制子类型k_binary。 这对MongoDB来说并不重要 - 只有当你的应用程序愿意让它变得重要时,它才重要。

相关内容

  • 没有找到相关文章

最新更新