5

我有一个候选键(mongodb 候选键,__id),它在协议缓冲区中如下所示:

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

自然,我不能ParseToString(std::string)在我的 bson 文档中使用协议缓冲区编码字符串(via),因为它可以包含非打印字符。因此,我使用 ascii85 编码对数据进行编码(使用这个库)。我有两个问题。

  1. b85 编码 bson 安全吗?
  2. bson 的二进制类型是什么?有什么方法可以使用 mongodb API 调用将我的(二进制)字符串植入该字段,还是只是语法糖来表示需要以某种形式处理的值类型(即,不是本机MongoDB实体)?

编辑

api的append binary节目数据被编码为十六进制(OMG!),因此 base85 更节省空间(在我的情况下,每条记录 22 个字节)。

4

1 回答 1

4
  1. BSON 安全,是的。ASCII85 编码的输出也是有效的 utf-8 iirc。
  2. 它用于存储大块的二进制数据。二进制数据是官方支持的类型,您应该能够使用适当的驱动程序代码(在您的情况下为 BSONObj)将二进制值推送到 BSON 字段。有关详细信息,请参阅您的驱动程序文档或源代码。
于 2012-01-24T15:48:06.937 回答