簡體   English   中英

歸檔mongodb集合

[英]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天的文檔

http://docs.mongodb.org/manual/tutorial/expire-data/

使用mongoexport,您可以備份單個集合而不是整個數據庫。 我會建議Cron-Job(像您一樣傷心)導出數據,並在刪除其他文檔后,將數據庫限制在最近3個月的文檔范圍內。

mongoexport -d databasename -c collectionname -o savefilename.json

暫無
暫無

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

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