[英]Archiving a mongodb collection
我正在使用Java Spring和mongodb的spring數據。
我有一個集合,該集合僅需要包含過去三個月的文檔,但是所有文檔都應該以某種方式保存(也許會暴露到文件中?)。 我正在尋找解決方案,但我能找到有關完整數據庫備份的話題。
將收藏集更新到最近三個月的最佳方法是什么? (每周cron?)如何保存收藏檔案? 我認為mongodump太過分了。
mongoexport和mongodump均支持-q選項以指定查詢以限制將要刪除的文檔。 兩者的選擇都取決於您希望數據以什么格式存儲。
假設您有一個帶有時間戳字段的集合。 您可以運行以下任一方法(在尖括號中填寫所需的名稱和時間):
mongoexport -d <yourdatabase> -c <yourcollection> -q "{ timestamp: { \$gt: <yourtimestamp>}}" -o <yourcollection_export_yourtimestamp>.json
mongodump -d <yourdatabase> -c <yourcollection> -q "{ timestamp: { \$gt: <yourtimestamp>}}"
然后刪除舊數據。
或者,您可以使用帶有ttl索引的集合中的任何一種方法通過cron進行定期快照,這樣您就不必自己修剪它-mongodb將自動刪除較舊的數據:
db.collectioname.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 7862400 } )
根據文檔中的createdAt字段,這將繼續刪除任何超過91天的文檔
使用mongoexport,您可以備份單個集合而不是整個數據庫。 我會建議Cron-Job(像您一樣傷心)導出數據,並在刪除其他文檔后,將數據庫限制在最近3個月的文檔范圍內。
mongoexport -d databasename -c collectionname -o savefilename.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.