sql >> Database >  >> NoSQL >> MongoDB

Hoe MongoDB Document rechtstreeks naar Jackson JsonNode in Java te converteren

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.



  1. transactie met meerdere documenten werkt niet in c# met behulp van mongodb 4.08 community-server

  2. Redis zrevrangebyscore, sorteren anders dan lexicografische volgorde

  3. hoe op te lossen:'MongoError:authenticatie mislukt' @MongoDB Atlas

  4. Aggregate $lookup retourneert de oorspronkelijke arrayvolgorde van elementen niet