sql >> Database >  >> NoSQL >> MongoDB

Jaarmaand filteren uit Mongo-document

U moet een aangepaste codec maken voor Year Month, omdat dit geen standaard Bson-type is. Dit omvat twee stappen. Pas het aan op basis van uw behoeften.

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

    }

}   

Registreer de codec bij de Mongo-client

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. Hoe tijdgegevens in mongoDB te normaliseren / verminderen?

  2. meteoor upload een bestand naar mongodb

  3. Push en Set-bewerkingen in dezelfde MongoDB-update

  4. mongodb verbinding pooling