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&lt;&gt;();
    map.put(Keys.IMAGE_BINARY, bImage);
    coll.insertOne(new Document(map));

以上です。

コメント