繁体   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