簡體   English   中英

如何在 mongodb 中獲取 TTL 或過期文檔?

[英]How to get TTL or expired document in mongodb?

我想創建票務系統。 在給定的時間段后,票在哪里被取消?。為了在一段時間后刪除,我將使用 MongoDb 的索引功能。 但是在它到期之前或在該特定票證到期之后我想檢索或將其保存在不同的集合中以備將來使用 mongodb 是可能的嗎?

在我寫這篇文章的當前版本的 MongoDB 5.0.8 中,它不被直接支持,但它將在 MongoDB 6.0 中(CF this jira ticket )並且有一個你可以同時使用的解決方法(繼續閱讀!)。

讓我解釋。 你想要做的是:

  • 設置一個TTL 索引,當時間經過 X 秒時,它將自動刪除 MongoDB 集合中的文檔。
  • 在此集合上設置一個更改流,並設置一個過濾器以僅保留刪除操作。

在 5.0.8 中,此更改流事件將僅包含已刪除文檔的_id字段,而沒有其他內容,因為這是 oplog 中當前可用的唯一信息。

在 6.0 中,您將能夠訪問此文檔的先前狀態(因此它是被刪除之前的最后狀態)。

話雖如此,Pavel Duchovny 在他的博客文章中解釋了一種解決方法。 您可以輕松地適應他的通知系統來實現您想要的行為。

暫無
暫無

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

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