首页 > 解决方案 > 删除旧的 MongoDB 文档

问题描述

相当有趣的案例。我有一个包含大量文档的庞大 MongoDB 集合。这是两个字段(我更改了字段名称)。

{
"pidNumber" : NumberLong(12103957251), 
"eventDate" : ISODate("2018-05-15T00:00:00.000+0000")
} 

我需要计算日期早于 1 年的所有实例,但前提是存在具有相同 pidNumber 的更新文档。

例如:

如果只有一个 pidNumber 为 1234 的文档是三年前的 - 保留它(不要计算)。

但是,如果除此之外还有另一个 pidNumber 为 1234 的文件,而且是两年前的 - 算上三年前的文件。

有可能吗?有人知道怎么做吗?

标签: sqldatabasemongodbnosql

解决方案


不完全清楚您在寻找什么,但这可能是一个很好的起点:

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库。


推荐阅读