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

Filtrering af YearMonth fra Mongo-dokument

Du bliver nødt til at oprette brugerdefineret codec for år måned, da dette ikke er en standard Bson-type. Dette involverer to trin. Juster ud fra dine behov.

Opret codec'et

public class YearMonthCodec implements Codec<YearMonth> {

    public void encode(BsonWriter writer, YearMonth value, EncoderContext encoderContext) {

        writer.writeStartDocument();

        writer.writeName("year");
        writer.writeInt32(value.getYear());
        writer.writeName("month");
        writer.writeInt32(value.getMonth().getValue());

        writer.writeEndDocument();

    }

    public Class<YearMonth> getEncoderClass() {
        return YearMonth.class;
    }

    public YearMonth decode(BsonReader reader, DecoderContext decoderContext) {

        reader.readStartDocument();

        int year = reader.readInt32("year");
        int month = reader.readInt32("month");

        reader.readEndDocument();

        return YearMonth.of(year, month);

    }

}   

Registrer codec'et med Mongo-klienten

CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(new YearMonthCodec()),
        MongoClient.getDefaultCodecRegistry());
MongoClientOptions options = MongoClientOptions.builder().codecRegistry(codecRegistry).build();
MongoClient mongoClient = new MongoClient(new ServerAddress(), options);



  1. Indstilling af dynamisk sti i redis.conf ved hjælp af miljøvariablen

  2. MongoDB:Ufølsom mellem store og små bogstaver og accentufølsom

  3. Hvordan konverterer man en hexadecimal streng til et tal i mongodb?

  4. Fjern et element fra et array mongodb tilsvarende i mongoose