MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment convertir directement le document MongoDB en Jackson JsonNode en Java

J'ai pu trouver une solution en utilisant 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);
}

Je ne sais pas si c'est le moyen le plus efficace, je suppose que c'est toujours une meilleure solution que de convertir BSOn en String et d'analyser cette chaîne. Il y a un ticket ouvert dans mongoDB JIRA pour ajouter la conversion de Document, DBObject et BsonDocument à àBson et vice versa, ce qui simplifierait beaucoup tout le processus.