为啥mongodb以base64的形式存储二进制数据?
Posted
技术标签:
【中文标题】为啥mongodb以base64的形式存储二进制数据?【英文标题】:Why mongodb store binary data in the form of base64?为什么mongodb以base64的形式存储二进制数据? 【发布时间】:2021-11-05 13:36:04 【问题描述】:我正在尝试了解 mongodb 如何在后台存储每种数据类型。 我发现它以 BSON 格式存储数据。
为了在mongodb中存储二进制数据,它需要用户将字节数组转换为base64,然后将base64转换后的字符串传递给BinData(subtype,content in base64)类。
以这种格式存储二进制数据的原因是什么。为什么 mongodb 不允许我们存储原始二进制文件?
【问题讨论】:
我想说,仅仅是因为 MongoDB 开发者社区决定这样做。 【参考方案1】:根据BSON specification,二进制存储为 32 位长度,后跟类型标识符,然后是一系列字节。不是 base64 字符串,字节。
一个从codementor.io无耻复制的函数表明,在能够直接处理二进制数据的语言中,它可以直接存储:
static void Main(string[] args)
Console.WriteLine("Hello World!");
var service = new QuestionService();
// CONVERT JPG TO A BYTE ARRAY
byte[] binaryContent = File.ReadAllBytes("image.jpg");
var question = new Question
Category = "Children's Quizzes",
Type = "Puzzles",
QuestionHeading = "Find the cat in the below image",
ContentImage = binaryContent, // Store the byte array in ContentImage property
Score = 10
;
service.Create(question);
BinData()
是一个允许直接在源代码文本中指定二进制数据的构造函数。
geeksforgeeks.org 有一个示例说明如何Upload and Retrieve Image on MongoDB using Mongoose
【讨论】:
您是说 MongoDB 接受一个值作为 base64 字符串吗?然后它将该值转换为 32 位长度的二进制,然后转换为一系列字节?如果我错了,请纠正我。以上是关于为啥mongodb以base64的形式存储二进制数据?的主要内容,如果未能解决你的问题,请参考以下文章