[英]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.