查找并删除 "createdDate" 一个月前的所有文档

Find and remove all documents whose "createdDate" is one month older

我正在研究 MongoDB Collections。我有一组集合,每个集合都有很多文档。我必须编写一个程序来删除所有 "createdDate" 距当前日期早于一个月的文档。

我无法找到比当前日期早一个月的日期,以便与文档的 "createdDate" 进行比较。

我还必须安排此程序,以便它可以每天自动 运行。 (OS 是 windows)。我怎样才能实现它?

您可以尝试获取一个包含当前日期月份的日期对象(请记住 JavaScript 月份日期是基于 0 的索引)并加 1 以获得从现在开始一个月的日期,您然后可以在查询中使用 $gt 运算符在 createdDate 字段上:

var now = new Date();
d = new Date(now.getFullYear(), now.getMonth()+1, now.getDate());
db.collection.remove({ createdDate: { $gt: d } })

更新

对于你的第二个问题,

i have to schedule this procedure, so that it can run automatically everyday. (OS is windows). How can i achieve it?

MongoDB 目前不支持本机作业调度。大多数操作系统都有办法 运行 计划程序,如 cron 或 Windows Task Scheduler 等,因为这是一个相当广泛的问题,我只能建议你写一个自定义 shell 脚本以上,您可以使用 Windows Task Scheduler 安排到 运行 每天。