MongoDBのBinaryデータの読み書きについてです。
読み込み時にエラーが発生したため、
対処方法をメモします。
Mongo Driver の Version
3.2.2 です。
<!-- MongoDB -->
org.mongodb
mongo-java-driver
3.2.2
JAVA記述とエラー内容
- JAVA記述
Document doc = coll.findOneByMbid(artist.getMbid());
byte[] bImage = doc.get(Keys.IMAGE_BINARY, byte[].class);
- エラー内容
java.lang.ClassCastException: Cannot cast org.bson.types.Binary to [B
修正した記述
Binaryクラスを使用して、取り出しするようにしました。
byte配列は、Binary#getData() メソッドで取り出せます。
- JAVA記述
Document doc = coll.findOneByMbid(artist.getMbid());
Binary binary = doc.get(Keys.IMAGE_BINARY, Binary.class);
byte[] bImage = binary.getData();
補足.書き込み
書き込み時は以下の記述で可能でした。
Document の 登録時にbyte配列を、Binaryクラスに変換して登録してくれていそうです。
byte[] bImage = getImage();
Map map = new HashMap<>();
map.put(Keys.IMAGE_BINARY, bImage);
coll.insertOne(new Document(map));
以上です。
コメント