2012-01-24 9 views
5

私は候補キー(MongoDBの候補キー、__id)を持ってthatsのプロトコルバッファに次のようになります。バイナリからテキストへのエンコード、非印字文字、プロトコル・バッファー、MongoDBのとBSON

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

私は非印刷文字を含むことができるので、私のbsonドキュメントでプロトコルバッファの符号化文字列(ParseToString(std::string)経由)を使用することはできません。したがって、私はascii85エンコーディングを使ってデータを符号化しています(this libraryを使用しています)。私には2つの質問があります。

  1. b85はbson-safeです。
  2. bson's binary type forとは何ですか? mongodb API呼び出しを使って自分の(バイナリ)文字列をそのフィールドに埋め込むことができる方法があるのですか、それはちょうど何らかの形で処理する必要のある値型を表す構文的な砂糖です(--ie、native mongodbエンティティ)?

編集

append binary APIのショーのデータが進としてエンコードされている(OMG!)、base85は、したがって、より多くのスペース効率の良い(私の場合は、レコードごとに22バイト)です。

答えて

4
  1. BSON safe、yes。 ASCII85エンコーディングの出力も有効です。utf-8 iirc。
  2. バイナリデータのチャンクを格納するために使用されます。バイナリデータは正式にサポートされているタイプなので、適切なドライバコードBSONObjを使用してバイナリ値をBSONフィールドにプッシュすることができます。詳細については、ドライバのドキュメントまたはソースコードを参照してください。
+0

Aha、バリデーションのおかげで、長さフィールドを取る 'BSONObjBuilding :: AppendBinData'というバイナリデータを追加する方法があることがわかりました。 –

関連する問題