2012-01-27 54 views
0

我现在用的是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

+0

检查对象的ID实际上是否为OID类型。或者使用一个选中的OID()而不是__oid()。 – dimitri 2012-01-28 08:02:49

+0

仍然收到相同的错误。我是否正确使用函数getObjectID? API文档没有解释足够的内容。 – 2012-01-28 08:17:39

+0

试试这个:std :: string oid = r [“_ id”]。OID()。toString(); – dimitri 2012-01-28 12:30:04

回答

0

查询对象返回指向存储BSONObj的缓冲区的指针。 当我没有使用函数BSONObj::getOwned()来请求导致异常的BSONObj副本时,我出错了。

相关问题