sql - 删除旧的 MongoDB 文档
问题描述
相当有趣的案例。我有一个包含大量文档的庞大 MongoDB 集合。这是两个字段(我更改了字段名称)。
{
"pidNumber" : NumberLong(12103957251),
"eventDate" : ISODate("2018-05-15T00:00:00.000+0000")
}
我需要计算日期早于 1 年的所有实例,但前提是存在具有相同 pidNumber 的更新文档。
例如:
如果只有一个 pidNumber 为 1234 的文档是三年前的 - 保留它(不要计算)。
但是,如果除此之外还有另一个 pidNumber 为 1234 的文件,而且是两年前的 - 算上三年前的文件。
有可能吗?有人知道怎么做吗?
解决方案
不完全清楚您在寻找什么,但这可能是一个很好的起点:
db.collection.aggregate([
{
$group:
{
_id: "$pidNumber",
eventDate: { $max: "$eventDate" },
count: { $sum: 1 }
}
},
{
$match: {
$or: [
{ count: 1 },
{ eventDate: { $gt: moment().endOf('day').subtract(1, 'year').toDate() } }
]
}
}
])
每当需要处理日期/时间值时,我都会推荐moment.js库。
推荐阅读
- terraform-provider-aws - 如何使用 Terraform 启用 AWS ElasticSearch 域的错误日志
- mysql - 将 Ejabberd MySQL Schema 升级到 new_sql_schema
- html - boostrap的问题(初学者)
- react-native - 如何修复 DuplicateError 上的 react-native metro?
- java - 数字促销是否使用缩小转换?
- c# - Sorted Dictionary customize key look-up for efficiency
- angular - 无法在 Angular 9 中路由组件:TypeError:无法读取未定义的属性“出口”
- css - CSS:为什么将 -webkit 添加到 linear-gradient() 会影响 Chrome 上的渐变角度?
- sql - 如何将 Excel 电子表格导入我的数据库?
- xml - 将多个具有相似结构的 XML 文件导入到具有同一张表的 Access DB 中