2012-01-27 11 views
0

私はBSONObjが有効なデータを持っているが、私は次のエラーを取得することを確信している文字列BSONオブジェクトのOIDを16進文字列として取得する方法は?

BSONObj r=some_function(); 
BSONElement oi; 
r.getObjectID(oi); 
OID o=oi.__oid(); 
cout<<"oid:"<<o.toString()<<endl;` 

BSONオブジェクトのオブジェクトIDを変換しようとmongo-cxxドライバを使用しています:

BSONElement: bad type #somenumber

+0

オブジェクトのIDが実際にOIDタイプであることを確認します。または、__oid()の代わりにチェックされたOID()呼び出しを使用します。 – dimitri

+0

でも同じエラーが発生します。私は正しくgetObjectID関数を使用していますか? APIのドキュメントでは、それについて十分に説明していません。 –

+0

これを試してください:std :: string oid = r ["_ id"]。OID()。toString(); – dimitri

答えて

0

クエリオブジェクトは、BSONObjが格納されているバッファへのポインタを返します。 例外を引き起こしていたBSONObjのコピーを要求するために、関数BSONObj::getOwned()を使用しなかったときに間違っていました。

関連する問題