奇怪的行为 insert_one mongocxx 3.6
Strange behaviour insert_one 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 debugger
这是我可以通过 mongodb 客户端看到的内容:mongodb client
调试器正在向您显示十进制的各个字节。
我用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
使用 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 debugger
这是我可以通过 mongodb 客户端看到的内容:mongodb client
调试器正在向您显示十进制的各个字节。
我用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