【问题标题】:How to get OID of a BSON object as a hex string?如何将 BSON 对象的 OID 获取为十六进制字符串?
【发布时间】:2012-02-20 19:55:30
【问题描述】:

我正在使用mongo-cxx 驱动程序尝试将BSON 对象的对象ID 转换为字符串

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

我确定BSONObj 有有效数据,但我收到以下错误:

BSONElement:错误类型#somenumber

【问题讨论】:

  • 检查对象的 ID 确实是 OID 类型。或者使用检查过的 OID() 调用而不是 __oid()。
  • 仍然遇到同样的错误。我是否正确使用函数 getObjectID? API 文档对它的解释不够充分。
  • 试试这个:std::string oid = r["_id"].OID().toString();
  • 还是不行。 BSONElement 类中没有定义函数 OID()。
  • 我发现了我的错误并添加了答案。感谢您的帮助。

标签: c++ mongodb serialization bson mongo-cxx-driver


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 2014-03-19
    • 2013-02-07
    相关资源
    最近更新 更多