MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak przechowywać pole Date jako ISODate() za pomocą jackson w MongoDb

Potrzebujesz modułu Jackson Joda. Jeśli zaimportujesz go do swojej ścieżki klasy, możesz wykonać następujące czynności w swoim programie mapującym, aby zapisać go jako żądany znacznik czasu:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
mapper.writeValueAsString(date);

Możesz zastąpić date w powyższym przykładzie kodu z Twoim POJO, jeśli to konieczne.

Edycja:Wygląda na to, że naprawdę chcesz niestandardowy serializator. To wyglądałoby mniej więcej tak:

public class IsoDateSerializer extends JsonSerializer<DateTime> {
    @Override
    public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) {
        String isoDate = ISODateTimeFormat.dateTime().print(value);
        jgen.writeRaw("ISODATE(\"" + isoDate + "\")");
    }

Następnie zarejestrujesz go w maperze dla wszystkich typów DateTime

mapper.addSerializer(DateTime.class, new IsoDateSerializer());

lub określ go w funkcji za pomocą adnotacji

@JsonSerializer(using = IsoDateSerializer.class)
public DateTime createdTime;


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Usuwanie duplikatów rekordów za pomocą MapReduce

  2. Wywołanie zwrotne Mongoose.js instance.save() nie uruchamia się

  3. mongoexport bez pola _id

  4. MongoDb z FastAPI

  5. Nie można znaleźć dokumentów przeszukujących według ObjectId przy użyciu Mongoose