无论如何,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:如何为每个数组元素创建_id?

是否可以创建具有不同金额的自动支付解决方案?

在实时 mongodb 机器上更新(或替换)整个数据库集合的最佳方法是啥?

您将如何创建一个自动昵称系统,每个新成员的昵称数量都会增加?

新数仓系列:MongoDB关键能力和特性梳理

Markdown 和图像对齐