如何获取BSON对象的OID作为十六进制字符串?
问题描述:
我现在用的是mongo-cxx
司机试图将一个BSON
对象的对象ID转换为字符串如何获取BSON对象的OID作为十六进制字符串?
BSONObj r=some_function();
BSONElement oi;
r.getObjectID(oi);
OID o=oi.__oid();
cout<<"oid:"<<o.toString()<<endl;`
我敢肯定,BSONObj
具有有效的数据,但我得到以下错误:
BSONElement: bad type #somenumber
答
查询对象返回指向存储BSONObj
的缓冲区的指针。 当我没有使用函数BSONObj::getOwned()
来请求导致异常的BSONObj
副本时,我出错了。
检查对象的ID实际上是否为OID类型。或者使用一个选中的OID()而不是__oid()。 – dimitri 2012-01-28 08:02:49
仍然收到相同的错误。我是否正确使用函数getObjectID? API文档没有解释足够的内容。 – 2012-01-28 08:17:39
试试这个:std :: string oid = r [“_ id”]。OID()。toString(); – dimitri 2012-01-28 12:30:04