sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo convertir directamente MongoDB Document do Jackson JsonNode en Java

Pude encontrar alguna solución 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);
}

No estoy seguro de si esta es la forma más eficiente, supongo que sigue siendo una mejor solución que convertir BSOn a String y analizar esa cadena. Hay un ticket abierto en mongoDB JIRA para agregar conversión desde Document, DBObject y BsonDocumento a aBson y viceversa, lo que simplificaría mucho todo el proceso.