簡體   English   中英

Java Spring 引導嵌入式 MongoDB 不觸發 TTL 移除

[英]Java Spring Boot embedded MongoDB doesn't trigger TTL removal

我正在嘗試為短暫的 collections 測試 MongoDB TTL 功能。 在字段上使用 @Indexed 注釋,如下所示:

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

在構造函數中,我將 deleteAt 初始化為this.deleteAt = new Date() ,並且我希望在將我的 Document 插入 Mongo 之后,在它的 TTLManager 運行之后,這個集合將被刪除。 但是即使等待幾分鍾也沒有幫助它沒有被刪除。 我在 mongo shell 中運行db.serverStatus().metrics.ttl並返回:

[
  {
    "deletedDocuments": 0,
    "passes": 8
  }
]

並且命令db.adminCommand({getParameter:1, ttlMonitorEnabled: 1})返回:

[
  {
    "ok": 1,
    "ttlMonitorEnabled": true
  }
]

我的代碼有問題嗎? 或者是因為嵌入式 mongo 不支持這一點,是否可以配置嵌入式 mongo 使其工作? 我正在使用https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo用於嵌入式 MongoDB 和默認設置。

它只是 MongoDB 服務器( mongod )功能

mongod中的后台線程讀取索引中的值並從集合中刪除過期文檔。

https://docs.mongodb.com/manual/core/index-ttl/#delete-operations

嵌入式 MongoDB 框架使用MongodProcess class “模擬” mongod進程,僅用於部署基本的嵌入式服務器。

https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo/blob/master/src/main/java/de/flapdoodle/embed/mongo/MongodProcess.java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM