2016-11-30 53 views
1

我知道有可能消除時保存的日期去世與此命令的一些文件:刪除文件,如果時間戳太舊

db.course.deleteMany({date: {"$lt": ISODate()}}) 

我試圖做同樣的事情,但我想檢查一個時間戳被去世

所有保存的時間戳是這樣一個

1492466400000 

是否有可能使符合條件的命令刪除所有文件與太舊時間郵票?

編輯

我用毫秒時間戳

+0

你是什麼意思*太老時間戳*?你有一個特定的價值嗎? – styvane

+0

@Styvane例如,這個時間戳「1479464200000」(2016年11月18日)是一箇舊的,但'1480933000000'(2016年12月5日)是一個很好的。如果給定的時間戳等於比當前日期更早的日期,則它是舊的 –

回答

0

我覺得要做到這一點

db.course.deleteMany({date: {"$lt": ISODate()*1}}) 

ISODate()*1條件將日期轉換成時間戳的方式

ISODate(timestamp)將時間戳轉換爲日期。

1

在MongoDB 3.2中,您還可以使用TTL索引,您可以對MongoDB說「如果{fieldDate}比3600秒更老,請刪除所有文檔」。這對於日誌記錄非常有用(刪除所有更早3個月的日誌)。

也許不是你的用例,但我覺得很好知道。

TL索引是特殊的單字段索引,MongoDB可以使用這些索引在特定時間或特定時間段後自動從集合中刪除文檔。數據過期對於某些類型的信息非常有用,例如機器生成的事件數據,日誌和會話信息,這些信息只需要在有限的時間內保留在數據庫中。

db.eventlog.createIndex({ "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 }) 

https://docs.mongodb.com/v3.2/core/index-ttl/