Deberá crear un códec personalizado para el mes del año, ya que este no es un tipo de Bson estándar. Esto implica dos pasos. Ajuste según sus necesidades.
Crea el códec
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);
}
}
Registre el códec con el cliente Mongo
CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(new YearMonthCodec()),
MongoClient.getDefaultCodecRegistry());
MongoClientOptions options = MongoClientOptions.builder().codecRegistry(codecRegistry).build();
MongoClient mongoClient = new MongoClient(new ServerAddress(), options);