gpt4 book ai didi

java - 归档 mongodb 集合

转载 作者:行者123 更新时间:2023-12-01 12:59:40 25 4
gpt4 key购买 nike

我正在使用 java Spring 和 spring data for mongodb。

我有一个集合,需要包含过去 3 个月的文档,但所有文档都应以某种方式保存(也许导出到文件?)。我正在寻找解决方案,但我所能找到的只是有关完整数据库备份的讨论。

使集合仅更新到最近 3 个月的最佳方法是什么? (每周计划表?)如何保存馆藏文件?我认为 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>}}"

然后删除旧数据。

或者,您可以通过 cron 使用任一方法对具有 ttl 索引的集合进行定期快照,这样您就不必自己修剪它 - mongodb 会自动删除旧数据:

db.collectioname.ensureIndex( { "createdAt": 1 }, { expireAfterSeconds: 7862400 } )

这将根据文档中的createdAt字段继续删除任何超过91天的文档

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

关于java - 归档 mongodb 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23609140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com