Ich konnte mit bson4jackson eine Lösung finden:
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);
}
Ich bin mir nicht sicher, ob dies der effizienteste Weg ist, ich gehe davon aus, dass es immer noch eine bessere Lösung ist, als BSOn in String zu konvertieren und diesen String zu analysieren. Es gibt ein offenes Ticket in mongoDB JIRA zum Hinzufügen einer Konvertierung von Dokument, DBObject und BsonDocument zu zuBson und umgekehrt, was den ganzen Prozess sehr vereinfachen würde.