Mongodb 查找并删除所有其;createdDate“;她大一个月
我正在处理Mongodb 查找并删除所有其;createdDate“;她大一个月,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在处理MongoDB集合。我有一套收藏,每个收藏都有很多文档。我必须编写一个过程来删除那些“createdDate”从当前日期起超过一个月的所有文档 我一直在寻找比当前日期晚一个月的日期,以便将其与文档的“createdDate”进行比较 我还要安排这个程序,这样它每天都能自动运行。(操作系统是windows)。如何实现它?您可以尝试获取以当前日期的月份为单位的日期对象(请记住,JavaScript月份日期是基于0的索引),并添加1以获取从现在开始的一个月的日期,然后您可以在查询中使用cre
MongoDB集合
。我有一套收藏,每个收藏都有很多文档。我必须编写一个过程来删除那些“createdDate”从当前日期起超过一个月的所有文档
我一直在寻找比当前日期晚一个月的日期,以便将其与文档的“createdDate”进行比较
我还要安排这个程序,这样它每天都能自动运行。(操作系统是windows)。如何实现它?您可以尝试获取以当前日期的月份为单位的日期对象(请记住,JavaScript月份日期是基于0的索引),并添加1以获取从现在开始的一个月的日期,然后您可以在查询中使用
createdDate
字段上的$gt
运算符:
var now = new Date();
d = new Date(now.getFullYear(), now.getMonth()+1, now.getDate());
db.collection.remove({ createdDate: { $gt: d } })
更新
关于你的第二个问题
我必须安排这个过程,这样它才能自动运行
每天。(操作系统是windows)。我怎样才能做到呢
MongoDB目前不支持本机作业调度。大多数操作系统都有运行定时程序的方法,如cron或Windows任务调度器等,因此这是一个相当广泛的问题,我只能建议您使用上述内容编写一个自定义shell脚本,您可以使用Windows任务调度器计划每天运行。在我回答此问题之前,请快速提问:是否确实要“删除”它?“停用”该数据可能是一个更好的选择,这样您就可以保留该数据用于分析目的,而不会在应用程序中显示。那么您使用的是什么驱动程序或库?某种程度上决定了我如何写答案因为我是MongoDb的新手,我不知道这些文档也可以被停用。我当然想取消它。我使用的是java驱动程序。停用并不是mongodb固有的功能,但您可以在文档模式中有一个名为“active”的bool。如果要停用此选项,请将其设置为false,并在查询中包含active:true。请确保为此字段编制索引。mongodb将使用Thank将其与其他索引混合,这对我很有用。请帮我解决第二个问题。我必须安排这个过程,这样它每天都能自动运行。(操作系统是windows)。我怎样才能做到呢?