MongoDB Java GridFSFile устаревший тип документа в 3.6

Похоже, что класс GridFSFile устарел метод getContentType(). Они сказали, что информация о типе контента должна храниться в поле метаданных.

К сожалению, я не могу понять, как написать тип контента, как новый API (тот, который смотрит в метаданных), так и старый API (тот, который смотрел в обычных данных).

Просто для ясности:

{
    "_id" : ObjectId("5a8600e97f0e2df85d8df68b"),
    "filename" : "350c0e82337fcba3da9a8dc129919fc4",
    "length" : NumberLong(12869),
    "chunkSize" : 261120,
    "uploadDate" : ISODate("2018-02-15T21:51:37.478Z"),
    "md5" : "350c0e82337fcba3da9a8dc129919fc4",
    "metadata" : {
        "content_type" : "png"
    }
}

по сравнению со старым форматом:

{
    "_id" : ObjectId("54384ce8e1b64990eb0bb110"),
    "filename" : "71727da052530862d4ad26f6b0114419",
    "aliases" : null,
    "chunkSize" : NumberLong(262144),
    "uploadDate" : ISODate("2014-10-10T21:17:28.469Z"),
    "length" : NumberLong(65368),
    "contentType" : "pdf",
    "md5" : "71727da052530862d4ad26f6b0114419"
}

Обратите внимание на расположение типа контента - в одном он находится на верхнем уровне, в другом - внутри подобъекта метаданных.

Устаревший метод в новом API не будет работать при вызове чего-либо, хранящегося без ключа contentType на верхнем уровне - он выдает исключение (Исключение в потоке "AWT-EventQueue-0" com.mongodb.MongoGridFSException: нет данных contentType для этот файл GridFS).

У меня есть смесь вещей, которые получают доступ к данным с использованием старого API и нового API, но для меня не очевидно, как записать данные в базу данных как с помощью старого, так и нового способа представления типа контента. Лучшая идея-кандидат, с которой я столкнулся, - это написать документ с использованием нового стиля с метаданными, а затем ex post facto отредактировать часть в коллекции fs.files, чтобы иметь ключ contentType на верхнем уровне. Есть ли более разумный способ справиться с этим?

0 ответов

Другие вопросы по тегам