5

プロトコルバッファに次のような候補キー(mongodb候補キー、__ id)があります。

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

ParseToString(std::string)当然のことながら、bsonドキュメントには印刷されない文字が含まれている可能性があるため、プロトコルバッファでエンコードされた文字列を(経由で)使用することはできません。したがって、私はデータをエンコードするためにascii85エンコーディングを使用しています(このライブラリを使用)。2つの質問があります。

  1. b85はbson-safeをエンコードしていますか。
  2. bsonのバイナリタイプは何ですか?mongodb API呼び出しを使用して(バイナリ)文字列をそのフィールドに埋め込むことができる方法はありますか、それとも何らかの形式で処理する必要がある値型を示すための単なる構文糖衣ですか(つまり、ネイティブではありません) mongodbエンティティ)?

編集

したがって、append binaryAPIのショーのデータはhex(OMG!)としてエンコードされているため、base85の方がスペース効率が高くなります(私の場合、レコードあたり22バイト)。

4

1 に答える 1

4
  1. BSONは安全です、はい。ASCII85エンコーディングの出力も有効なutf-8iircです。
  2. バイナリデータのチャンクを格納するために使用されます。バイナリデータは公式にサポートされているタイプであり、適切なドライバコード(この場合はBSONObj)を使用してバイナリ値をBSONフィールドにプッシュできるはずです。詳細については、ドライバのドキュメントまたはソースコードを参照してください。
于 2012-01-24T15:48:06.937 に答える