奇怪的行为插入一个mongocxx 3.6



使用mongocxx,当我在集合中插入一个新对象(insert_one方法(时,我试图检索mongodb分配的对象id,并将该id转换为字符串。这是代码:

const mongocxx::database& db = _pClient->database(_dbName.c_str());
mongocxx::collection& collection = db.collection(collectionName.c_str());
auto retval = collection.insert_one(view);
bsoncxx::oid oid = retval->inserted_id().get_oid().value;
std::string str = oid.to_string()

不幸的是,当我试图将对象id转换为字符串时,字符串看起来是不可读的(像损坏的一样(。我使用的是mongocxx 3.4版和mongodb 4.0.28版(根据mongodb网站,这两个版本应该是兼容的(。你知道这里可能出了什么问题吗?

以下是我可以通过调试器看到的内容:visual studio调试器

下面是我在mongodb客户端上看到的:mongodb客户机

调试器以十进制显示各个字节。

我使用mongo shell将这些转换为十六进制,你可以看到它确实是你想要的ObjectID,它在十进制中看起来很奇怪

mongos> [98,3,-24,41,-88,89,0,0,-93,0,88,-78].map(n=>("0" +((n & 255).toString(16))).slice(-2)).join("")
6203e829a8590000a30058b2

最新更新