Ik kon een oplossing bedenken met behulp van 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);
}
Ik weet niet zeker of dit de meest efficiënte manier is, ik neem aan dat het nog steeds een betere oplossing is dan het converteren van BSOn naar String en het ontleden van die string. Er is een open Ticket in de mongoDB JIRA voor het toevoegen van conversie uit Document, DBObject en BsonDocument naar naarBson en vice versa, wat het hele proces een stuk eenvoudiger zou maken.