You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB删除非最大日期文档:同日期场景无需新增列的实现

解决MongoDB删除非最大日期文档的方法

嘿,我来帮你搞定这个需求!要保留所有日期为最大值的文档(也就是你那两条date相同的记录),删掉其他的,而且不能加排序字段,其实分两步走就很简单:

步骤1:先获取集合中的最大日期值

首先我们需要用聚合查询找出整个集合里date字段的最大值,假设你的集合名叫yourCollection,替换成你实际的集合名就行:

// 获取最大的date值
const latestDate = db.yourCollection.aggregate([
  { $group: { _id: null, maxDate: { $max: "$date" } } }
]).toArray()[0].maxDate;

这个聚合操作会把所有文档归为一个分组,然后用$max取出date的最大值,最后我们从结果里拿到这个日期。

步骤2:删除所有非最大日期的文档

拿到最大日期后,直接用deleteMany删除所有date不等于这个最大值的文档:

// 删除非最大日期的文档
db.yourCollection.deleteMany({ date: { $ne: latestDate } });

这样就会保留所有date等于最大值的文档,完美符合你的需求。

额外提醒

  • 执行删除操作前一定要备份数据!毕竟删除是不可逆的,最好先在测试环境验证一遍。
  • 如果你的场景是高并发,担心两步操作之间有新数据插入,可以考虑用MongoDB的事务(4.0及以上版本支持)把这两步包起来,避免数据不一致。

内容的提问来源于stack exchange,提问作者DevBR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:37:34