2012-01-27 4 views
0

Я использую драйвер mongo-cxx пытаюсь преобразовать идентификатор объекта в BSON объекта в строкуКак получить OID объекта BSON в виде шестнадцатеричной строки?

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

я уверен, что BSONObj есть достоверные данные, но я получаю следующее сообщение об ошибке:

BSONElement: bad type #somenumber

+0

Убедитесь, что идентификатор объекта имеет тип OID. Или используйте проверочный вызов OID() вместо __oid(). – dimitri

+0

все еще получают ту же ошибку. Я правильно использую функцию getObjectID? Документация API недостаточно объясняет это. –

+0

Попробуйте следующее: std :: string oid = r ["_ id"]. OID(). ToString(); – dimitri

ответ

0

Объект запроса возвращает указатель на буфер, в котором хранится BSONObj. Я ошибся, когда не использовал функцию BSONObj::getOwned(), чтобы запросить копию BSONObj, которая вызывала исключение.

Смежные вопросы