mongodb - 从 mongo db 集合中删除记录的 Cron 作业
问题描述
我有一个具有以下记录结构的 mongodb 集合:
{
"_id": {
"$oid": "6038930b613474692f48f81e"
},
"sender_id": "default",
"active_form": {},
"followup_action": null,
"latest_action_name": "action_listen",
"latest_event_time": 1614320506.277497,
"latest_input_channel": "cmdline",
"paused": false
}
我想删除latest_event_time
从现在起超过 2 年的所有记录,作为定期运行的 cron 作业的一部分。我现在无法更新这些字段的数据类型。的数据类型latest_event_time
是双精度,它存储时间戳值。如何通过比较latest_event_time
字段时间戳值来解决此问题以删除所有记录。
解决方案
我能够清除旧记录的方法是使用聚合函数将 latest_event_time 转换为日期格式,然后收集它。然后,我们将立即删除所有此类记录。
var today = new Date();
var requiredDay = new Date(today.getTime() - (150*24*60*60*1000));
var idsList = db.conversations.aggregate([
{
$addFields: {
my_event_time: { "$toDate": {
"$multiply": [
"$latest_event_time",
1000
]
}}
}
},
{ $match: { my_event_time: { $lt: requiredDay } } }
]).map(function(d) {
return d._id;
});
db.conversations.remove({ _id: { $in: idsList } });
推荐阅读
- python - 创建一个根据概率更改列表中值的函数
- java - 查找与 k 大元素对应的值
- google-bigquery - Google Cloud Functions PubSub 数据到 BigQuery
- c++11 - 识别 Eigen 中的临时对象创建
- html - 如何使 1024 x 600 和 1024 x 768 的媒体查询分别工作?
- python - 芹菜中的unicode(python 2.7)
- python - 任何用于查找推文情绪的预训练 ML 模型或分类器?
- javascript - 类型错误:onVideoSelect 不是函数
- python - 我对 python/html 的嵌套循环有疑问
- arduino - 将程序从 Atmel Studio 或 Avr dude 部署到 Atmel "XMEGA-A3BU Xplained"