MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como converter diretamente o Documento MongoDB do Jackson JsonNode em Java


Consegui descobrir alguma solução usando 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);
}

Não tenho certeza se essa é a maneira mais eficiente, estou assumindo que ainda é uma solução melhor do que converter BSOn em String e analisar essa string. Há um Tíquete aberto no mongoDB JIRA para adicionar conversão de Document, DBObject e BsonDocument para paraBson e vice-versa, o que simplificaria muito todo o processo.