簡體   English   中英

在Mongo DB的上限集合中跟蹤已刪除的文檔

[英]track deleted documents in Mongo DB's capped collection

是否有任何選項可以允許在從有限制的集合中刪除文檔時跟蹤文檔?

例如,我有一個狀態為已處理或未處理的訂單清單。 因此,當mongo決定刪除某些文檔時,我想每次將訂單保留在上限收集中並檢查狀態。 如果訂單已處理-很酷,就讓他離開,但如果訂單未處理,則將其推回隊列。

封頂集合是固定大小的集合,一旦集合已滿,它們就會通過覆蓋最舊的文檔來自動刪除它們(根據插入順序)。

從概念上講,有上限的集合是循環緩沖區,而不是隊列。

這聽起來不太適合用於保留訂單信息的用例-刪除文檔時,沒有“鈎子”可以將文檔重新插入有限制的集合中,如果有限制的集合太小,則可能會覆蓋文檔在處理之前。

我認為您真的想使用普通的(無上限)集合。

根據狀態刪除舊訂單

如果要基於某些狀態值刪除訂單,則應在應用程序代碼中進行處理(例如,當訂單從“待處理”狀態變為“已處理”狀態時,請執行任何清理操作)。

根據時間刪除舊的/過期的訂單

如果您希望在特定時間自動刪除舊的/過期的訂單,那么一個好的方法是使用具有文檔級生存時間(TTL)到期時間的普通集合,例如:

db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )

然后,您可以根據expireAt日期設置(或延長)每個訂單文檔的有效期。 請注意,如果您需要同時檢查expireAt值和狀態字段(TTL到期僅基於提供的日期索引),則這可能不是一個合適的選擇。

暫無
暫無

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

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