Успях да намеря някакво решение с помощта на bson4jackson:
public static InputStream documentToInputStream(final Document document) {
BasicOutputBuffer outputBuffer = new BasicOutputBuffer();
BsonBinaryWriter writer = new BsonBinaryWriter(outputBuffer);
new DocumentCodec().encode(writer, document, EncoderContext.builder().isEncodingCollectibleDocument(true).build());
return new ByteArrayInputStream(outputBuffer.toByteArray());
}
public static JsonNode documentToJsonNode(final Document document) throws IOException {
ObjectMapper mapper = new ObjectMapper(new BsonFactory());
InputStream is = documentToInputStream(document);
return mapper.readTree(is);
}
Не съм сигурен дали това е най-ефективният начин, предполагам, че все още е по-добро решение от преобразуването на BSOn в String и анализирането на този низ. Има отворен билет в mongoDB JIRA за добавяне на преобразуване от Документ, DBObject и BsonDocument до toBson и обратно, което ще опрости много целия процес.