gpt4 book ai didi

mongodb - 如何使用 mongoimport 导入二进制数据?

转载 作者:可可西里 更新时间:2023-11-01 10:01:28 27 4
gpt4 key购买 nike

我已经尝试了每种组合来为 Mongo 导入二进制数据,但我无法让它工作。我试过使用 new BinData(0, <bindata>)我试过使用
{
"$binary" : "<bindata>",
"$type" : "0"
}
第一个给我一个解析错误。第二个给我一个错误,显示“保留字段名称的使用无效。”

我可以正常导入其他对象。作为引用,我正在尝试导入 BASE64 编码的图像字符串。这是我当前使用的 JSON 版本:

{"_id" : "72984ce4-de03-407f-8911-e7b03f0fec26","OriginalWidth" : 73, "OriginalHeight" : 150, { "$binary" : "", "$type" : "0" }, "ContentType" : "image/jpeg", "Name" : "test.jpg", "Type" : "5ade8812-e64a-4c64-9e23-b3aa7722cfaa"}

最佳答案

我实际上弄清楚了这个问题,并认为我会回到 SO 来帮助任何可能正在苦苦挣扎的人。

本质上,我所做的是使用 C# 生成 JSON 文件。该文件用于运行并引入各种数据的导入脚本。集合中的一个字段需要将二进制图像数据存储为 Base64 编码的字符串。 Mongo 文档(Import Export ToolsImporting Interesting Types)很有帮助,但仅限于某一点。

为了为此正确设置 JSON 格式,我必须使用以下 C# 代码段将图像文件作为字节数组获取并将其转储到字符串中。对于较大的字符串,有一种更有效的方法(StringBuilder 对于初学者),但为了说明示例,我进行了简化:

byte[] bytes = File.ReadAllBytes(imageFile);
output = "{\"Data\" : {\"$binary\" : \"" + Convert.ToBase64String(bytes) + "\", \"$type\" : \"00\"}, \"ContentType\" : \"" + GetMimeType(fileInfo.Name) + "\", \"Name\" : \"" + fileInfo.Name + "\"}";

顺便说一句,我一直在打字部分失败。它转换为通用二进制数据,在此处的 BSON 规范中指定:http://bsonspec.org/#/specification .

如果你想直接跳到 JSON,上面的代码输出一个与此非常相似的字符串:

{"Data": {"$binary": "[Byte array as Base64 string]", "$type": "00"}, "ContentType": "image/jpeg", "Name": "test.jpg"}

然后,我只是使用 mongoimport 工具来处理生成的 JSON。

注意:因为我已经在使用 C#,所以我可以只使用 Mongo DLL 并在那里完成处理,但对于这种特殊情况,我必须在代码。欢乐时光。

关于mongodb - 如何使用 mongoimport 导入二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9447743/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com