Vous devrez créer un codec personnalisé pour Année Mois car il ne s'agit pas d'un type Bson standard. Cela implique deux étapes. Ajustez en fonction de vos besoins.
Créer le 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);
}
}
Enregistrez le codec avec le client 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);