Spring Boot MongoDB, проиндексированный с expireAfterSeconds для автоматического удаления документа, не работает - PullRequest
0 голосов
/ 25 мая 2018

У меня проблема с настройками времени жизни в MongoDB.Я создал индексированную аннотацию в моем проекте Spring-Boot 2.0.2.RELEASE в моей сущности, которая представляет мой документ в MongoDB.Я установил «expireAfterSeconds» для тестирования на 15 секунд, но MongoDB не удаляет вставленный документ через 15 секунд.Может кто-нибудь сказать мне, что я делаю неправильно?

Это индекс MongoDB в виде JSON:

[
  2,
  {
    "createdDateTime" : 1
  },
  "deleteAt",
  "AccountServiceDB.AccountRegistration",
  NumberLong(15)
]

Это моя сущность:

@Document(collection = "AccountRegistration")
public class UserRegistration {

  @Id
  private ObjectId _id;
  @Indexed(unique = true)
  private String username;

  @Indexed(unique = true)
  private String email;

  private String user_password;

  @Indexed(name = "deleteAt", expireAfterSeconds = 15)
  private Date createdDateTime;

  public UserRegistration() {}

  public ObjectId get_id() {
    return _id;
  }

  public void set_id(ObjectId _id) {
    this._id = _id;
  }
}

1 Ответ

0 голосов
/ 26 мая 2018

Здесь - это объяснение: «Фоновая задача, которая удаляет просроченные документы, выполняется каждые 60 секунд. В результате документы могут оставаться в коллекции в течение периода между истечением срока действия документа и выполнениемфоновое задание. "

...