我在 Protocol Buffer 中有一个候选 key (mongodb候选 key ,__ id),看起来像下面的样子:

message qrs_signature
{
  required uint32    region_id = 1;
  repeated fixed32 urls = 2;
};

自然,我不能在bson文档中使用 Protocol Buffer (通过ParseToString(std::string))编码字符串,因为它可以包含非打印字符。因此,我正在使用ascii85编码来编码数据(使用this library)。我有两个问题。
  • 是b85编码的bson安全代码。
  • 什么是bson's binary type for?有什么方法可以使用mongodb API调用将我的(二进制)字符串植入该字段,还是只是语法糖来表示需要以某种形式处理的值类型(即,不是 native mongodb实体)?

  • 编辑
    append binary api的show数据被编码为hex(OMG!),因此base85的空间效率更高(在我的情况下,每条记录22字节)。

    最佳答案

  • BSON安全,是的。 ASCII85编码的输出也是有效的utf-8 iirc。
  • 用于存储二进制数据块。二进制数据是一种官方支持的类型,您应该能够使用适当的驱动程序代码BSONObj将二进制值推送到BSON字段。有关详细信息,请引用驱动程序文档或源代码。
  • 关于c++ - 二进制到文本编码,非打印字符, Protocol Buffer ,mongodb和bson,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8988849/

    10-13 03:21