sql >> Databasteknik >  >> NoSQL >> MongoDB

Filtrera YearMonth från Mongo-dokument

Du måste skapa anpassad codec för Årsmånad eftersom detta inte är en standard Bson-typ. Detta innebär två steg. Justera utifrån dina behov.

Skapa codec

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);

    }

}   

Registrera codec 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. Hur använder man pollingThrottle och pollingInterval?

  2. redis cluster reshard [ERR] Anropar MIGRATE:ERR Syntaxfel

  3. Hur man ansluter Robomongo till MongoDB

  4. Apache Phoenix för CDH