Я на самом деле разобрался с этой проблемой и подумал, что вернусь в SO, чтобы помочь любому, кто может бороться.
По сути, я использовал C # для создания файла JSON. Этот файл использовался в скрипте импорта, который запускал и вводил все виды данных. Одно из полей в коллекции требовало хранения данных двоичного изображения в виде строки в кодировке Base64. Документы Mongo ( Инструменты импорта экспорта и Импорт интересных типов ) были полезны, но только до определенного момента.
Для правильного форматирования 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 и выполнить там обработку, но для этого конкретного случая мне пришлось создавать файлы JSON в коде raw , Веселые времена.