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

Mongodb 如何使用mongocxx驱动程序将GUID作为bsoncxx::types::b_oid追加到文档中?,mongodb,c++11,bson,mongo-cxx-driver,Mongodb,C++11,Bson,Mongo Cxx Driver,我已经对旧版驱动程序做了一些工作,现在我正在升级到新的驱动程序。但我遇到了一个问题。 我试图将GUID附加到基本文档中,但在新的驱动程序中,只允许12字节长的二进制数据。 在旧版驱动程序中,它接受16字节的数据,GUID转换为16字节。 是否可以将GUID转换为长度为12的字节数组 typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; uns

我已经对旧版驱动程序做了一些工作,现在我正在升级到新的驱动程序。但我遇到了一个问题。 我试图将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));

}

请,如果有人能帮助我,谢谢..

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

bArray.sub\u type=bsoncxx::binary\u sub\u type::k\u uuid\u已弃用;在我的情况下有效