У меня есть ключ кандидата (MongoDB ключ-кандидат, __id) Thats выглядит следующим образом в буферы протокола:транспортное кодирование, непечатаемые символы, буферы протокола, MongoDB и BSON
message qrs_signature
{
required uint32 region_id = 1;
repeated fixed32 urls = 2;
};
Естественно Я не могу использовать кодировку буферов протокола (через ParseToString(std::string)
) в моем документе bson, так как он может содержать непечатаемые символы. Поэтому я использую кодировку ascii85 для кодирования данных (используя this library). У меня есть два вопроса.
- Является ли b85 кодировкой bson-safe.
- Что такое bson's binary type for? есть ли способ, которым я могу внедрить мою (двоичную) строку в это поле, используя вызов API mongodb, или это просто синтаксический сахар, чтобы обозначить тип значения, который необходимо обработать в некоторой форме (-ie, а не родной mongodb)?
редактировать
данные показывают append binary
API, в который кодируется в виде шестнадцатеричной (OMG!), Base85, поэтому больше места эффективным (22 байта на запись в моем случае).
Aha, спасибо за проверку, теперь я вижу, что существует специальный метод для добавления двоичных данных, называемых BSONObjBuilding :: AppendBinData', который занимает поле длины. –