无论如何,mongodb每个月都会自动创建一个新数据库吗?
Posted
技术标签:
【中文标题】无论如何,mongodb每个月都会自动创建一个新数据库吗?【英文标题】:Is there anyway for mongodb to make a new db automatically every month? 【发布时间】:2019-08-10 09:39:28 【问题描述】:我有一个数据库来收集我和一些朋友玩的游戏的统计数据,这些统计数据每 31 天重置一次。我想弄清楚的是 mongodb 是否有办法制作月度数据库。因此,每个月都会创建一个具有相同配置的新 Db,只是使用空值并将在当月填充。
【问题讨论】:
MongoDB 没有内置的任务调度程序。您需要使用第三方调度程序(例如,Linux 上的crontab
)来运行 Mongo 命令。你用的是什么环境?
@Adam Windows 10
【参考方案1】:
由于您使用的是 Windows 10,我建议您使用 Windows 任务计划程序在每个月初运行脚本来复制模板数据库。
在进入复制数据库的脚本之前,您需要创建一个模板数据库作为每个副本的源。在本例中,我将简单地调用模板数据库stats-template
。创建它,然后根据需要进行设置。
现在你需要批处理脚本:
@echo off
set year=%date:~-4%
set month=%date:~4,2%
set newdb=stats-%year%-%month%
mongodump --db stats-template
mongorestore --db %newdb% dump/stats-template
rmdir /s /q dump
这将创建stats-template
数据库的转储(BSON 数据),然后将该数据恢复到名为 stats-[year]-[month]
的新数据库(例如,stats-2019-03
)。它还会在还原后删除转储。
现在您需要创建每月运行一次此脚本的任务。
-
打开任务计划程序
点击“创建任务...”(右侧面板)
为你的任务命名
转到触发器选项卡并单击“新建”
开始“按计划”任务
选择“每月”
选择一个好的初始开始时间
月份:全部
天数:1
转到“操作”选项卡并单击“新建”
操作:“启动程序”
从上方浏览批处理脚本
点击“确定”创建任务
现在您将在每个月的第一天获得一个基于模板数据库的新数据库。
【讨论】:
【参考方案2】:您可以将带有 ttl 索引的字段添加到集合中的每个文档。 Mongodb 会在时间过去后自动删除这些文档。 Documentation
【讨论】:
以上是关于无论如何,mongodb每个月都会自动创建一个新数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章
在实时 mongodb 机器上更新(或替换)整个数据库集合的最佳方法是啥?