MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come convertire direttamente il documento MongoDB con Jackson JsonNode in Java

Sono stato in grado di trovare una soluzione 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);
}

Non sono sicuro che questo sia il modo più efficiente, presumo che sia comunque una soluzione migliore rispetto alla conversione di BSOn in String e all'analisi di quella stringa. C'è un open Ticket nel mongoDB JIRA per aggiungere la conversione da Documento, DBObject e BsonDocument a toBson e viceversa, il che semplificherebbe molto l'intero processo.