FasterXMLを使用してオブジェクトをMongoDBにマップしています
期限切れのインデックスを使用したいのですが、そのためには、ドキュメントにISODateフィールドが必要です。
私のJavaクラスにDateフィールドがある場合、httpDateSerializer
://wiki.fasterxml.com/JacksonFAQDateHandlingで説明されているように、数値または文字列のいずれかでシリアル化されます。
私はそれをこの関数まで追跡しました:
/**
* Method that will handle serialization of Date(-like) values, using
* {@link SerializationConfig} settings to determine expected serialization
* behavior.
* Note: date here means "full" date, that is, date AND time, as per
* Java convention (and not date-only values like in SQL)
*/
public final void defaultSerializeDateValue(Date date, JsonGenerator jgen)
throws IOException, JsonProcessingException
{
// [JACKSON-87]: Support both numeric timestamps and textual
if (isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
jgen.writeNumber(date.getTime());
} else {
jgen.writeString(_dateFormat().format(date));
}
}
これらの2つのパスのいずれも、標準のmongodb日付型を書き込むことにはならないため、私のインデックスは機能しません。
Date
mongoシェルからドキュメントを作成するときのようにJavaタイプを強制的にシリアル化する方法はありますか?または、「トリガー」などを使用してフィールドを自動的に追加できますか?(シリアライザーを完全にバイパスすることを目的として)