删除旧的mongodb文档

zpgglvta  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(312)

很有意思的案子。我有一个巨大的mongodb收藏与大量的文件。这是两个字段(我更改了字段名)。

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

我需要计算所有的示例,其中的日期早于1年,但只有当有一个较新的文件与相同的编号。
例如:
如果只有一份文件的PID1234号是三年前的,那就留着吧(不算)。
但如果除此之外还有另一份PID1234号的文件,而且是两年前的——算上三年前的那份吧。
有可能吗?有人知道怎么做吗?

z2acfund

z2acfund1#

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

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

相关问题