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

MongoDB按子串去重实现方法:优先取EXIF年份否则取文件路径年份

解决方案

你可以通过MongoDB聚合管道实现需求,无法直接用distinct方法实现带条件计算的去重,需要通过管道分阶段处理:

  • 第一步:新增计算字段,按你给出的条件规则生成每条记录对应的年份
  • 第二步:对生成的年份字段分组,自动实现去重效果

具体查询代码如下:

db.你的集合名.aggregate([
  {
    $project: {
      year: {
        $cond: {
          // 判断EXIF.EXIFDateTimeOriginal是否存在且非空
          if: { $gt: [ { $strLenCP: { $ifNull: [ "$EXIF.EXIFDateTimeOriginal", "" ] } }, 0 ] },
          then: { $substr: [ "$EXIF.EXIFDateTimeOriginal", 0, 4 ] },
          else: { $substr: [ "$origPicFile", 24, 4 ] }
        }
      }
    }
  },
  // 按年份分组实现去重
  {
    $group: {
      _id: "$year"
    }
  },
  // 可选:调整输出字段名,更符合阅读习惯
  {
    $project: {
      _id: 0,
      year: "$_id"
    }
  }
])

注意:如果你的origPicFile路径格式固定,上述代码的起始索引直接可用。如果你所说的「第24位」是从1开始计数的,需要把24调整为23,MongoDB字符串索引从0开始计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:57:02