无论如何,mongodb每月都会自动创建一个新的数据库吗?

时间:2019-03-19 18:51:48

标签: javascript mongodb mongoose mongodb-query discord.js

我有一个数据库,该数据库收集我和一些朋友玩的游戏的统计数据,这些统计数据每31天重置一次。我想弄清楚的是mongodb是否有建立每月数据库的方法。因此,每个月都会制作一个具有相同配置的新Db,只是具有空值,并将在该月中填充。

2 个答案:

答案 0 :(得分:0)

由于您使用的是Windows 10,所以我建议使用Windows Task Scheduler运行脚本以在每个月初复制模板数据库。

在进入将要复制数据库的脚本之前,您需要创建一个模板数据库,该数据库将用作每个副本的源。在此示例中,我将简单地称为模板数据库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. 单击“创建任务...”(右侧面板)
  3. 命名任务
  4. 转到“触发器”标签,然后单击“新建”
    • “按计划”开始任务
    • 选择“每月”
    • 选择良好的初始开始时间
    • 月份:全部
    • 天数:1
  5. 转到“操作”标签,然后单击“新建”
    • 操作:“启动程序”
    • 从上方浏览批处理脚本
  6. 单击“确定”以创建任务

现在,您将在每月的第一天获得基于模板数据库的全新数据库。

答案 1 :(得分:-1)

您可以将具有ttl索引的字段添加到集合中的每个文档。时间到后,Mongodb将自动删除这些文档。 Documentation