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

如何编写MongoDB查询查找单日产生3笔交易的客户详情

MongoDB查询:获取单日产生3笔交易的去重客户详情

关联规则

  • ACCOUNT集合的CID字段关联CUSTOMER集合的CID字段,一个客户可持有多个账户
  • TRANSACTIONS集合的ANO字段关联ACCOUNT集合的ANO字段,一个账户可产生多笔交易

实现逻辑

  1. 按交易所属账户+交易日期维度分组,统计每个账户每日的交易笔数
  2. 筛选出单日交易笔数等于3的账户记录
  3. 关联ACCOUNT集合,匹配账户对应的客户CID
  4. 关联CUSTOMER集合,匹配获取客户姓名信息
  5. 对客户CID做去重处理,避免同一客户多次满足条件时返回多条重复结果

完整查询语句

db.TRANSACTIONS.aggregate([
  // 按账户+日期分组统计单日交易笔数
  {
    $group: {
      _id: {
        ANO: "$ANO",
        // 提取日期格式化,忽略时间部分避免同一天不同时间被拆分统计
        TDATE: { $dateToString: { format: "%Y-%m-%d", date: "$TDATE" } }
      },
      transCount: { $sum: 1 }
    }
  },
  // 筛选单日交易笔数等于3的记录
  {
    $match: {
      transCount: 3
    }
  },
  // 关联ACCOUNT集合获取对应客户ID
  {
    $lookup: {
      from: "ACCOUNT",
      localField: "_id.ANO",
      foreignField: "ANO",
      as: "accountInfo"
    }
  },
  { $unwind: "$accountInfo" },
  // 关联CUSTOMER集合获取客户姓名,兼容ACCOUNT的数字CID和CUSTOMER的字符串CID格式差异
  {
    $lookup: {
      from: "CUSTOMER",
      let: { cidNum: "$accountInfo.CID" },
      pipeline: [
        {
          $match: {
            $expr: {
              $eq: [ "$CID", { $concat: [ "C", { $toString: "$$cidNum" } ] } ]
            }
          }
        }
      ],
      as: "customerInfo"
    }
  },
  { $unwind: "$customerInfo" },
  // 按客户CID去重
  {
    $group: {
      _id: "$customerInfo.CID",
      CNAME: { $first: "$customerInfo.CNAME" }
    }
  },
  // 格式化输出字段
  {
    $project: {
      _id: 0,
      CID: "$_id",
      CNAME: 1
    }
  }
])

示例输出

基于你提供的测试数据,执行后输出结果如下:

{ "CID": "C1", "CNAME": "Mark" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 22:18:04