2012-01-24 9 views
5

tengo una clave candidata (mongodb clave candidata, __id) eso parece que los siguientes en búferes de protocolo:codificación binaria-a-texto, caracteres no imprimibles, tampones de protocolo, mongodb y BSON

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

Naturalmente No puedo usar una cadena codificada de búferes de protocolo (a través de ParseToString(std::string)) en mi documento bson, ya que puede contener caracteres que no sean de impresión. Por lo tanto, estoy usando la codificación ascii85 para codificar los datos (usando this library). Tengo dos preguntas.

  1. Es b85 la codificación bson-safe.
  2. ¿Qué es bson's binary type for? ¿Hay alguna forma de que pueda implantar mi cadena (binaria) en ese campo utilizando una llamada API de mongodb, o es solo azúcar sintáctica para denotar un tipo de valor que necesita ser procesado de alguna forma (--es decir, no nativo? entidad mongodb)?

edición

datos de muestran la append binary de API se codifica como hexagonal (OMG!), Base85 es por lo tanto más eficiente del espacio (22 bytes por registro en mi caso).

Respuesta

4
  1. BSON seguro, sí. El resultado de la codificación ASCII85 también es válido iirc utf-8.
  2. Se usa para almacenar fragmentos de datos binarios. Los datos binarios son un tipo soportado oficialmente y usted debería poder enviar valores binarios a campos BSON utilizando el código de controlador apropiado, BSONObj en su caso. Consulte los documentos de su controlador o el código fuente para más detalles.
+0

Aha, gracias por la validación, ahora veo que hay un método específico para agregar datos binarios llamado 'BSONObjBuilding :: AppendBinData', que toma un campo de longitud. –

Cuestiones relacionadas