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

如何将MySQL拍卖表查询语句转换为MongoDB聚合查询

如何将MySQL查询转换为MongoDB聚合

输入图片描述

待转换的MySQL查询语句:

SELECT * FROM `auctions` WHERE ( (status!='SCHEDULED' AND status='FAILED') OR (status!='RUNNING' AND status='FAILED') ) GROUP BY auctioncode

你给出的MySQL查询WHERE条件可简化为status='FAILED',结合你补充的业务规则,实际筛选规则如下:

  • 同一auctioncode对应多条记录,仅保留该分组下不存在SCHEDULED或UNPAID状态的记录
  • 分组下必须存在status为FAILED的记录

对应MongoDB聚合语句如下:

db.auctions.aggregate([
  // 按auctioncode分组,收集同组所有状态和原始记录
  {
    $group: {
      _id: "$auctioncode",
      statusSet: { $addToSet: "$status" },
      originRecords: { $push: "$$ROOT" }
    }
  },
  // 过滤符合条件的分组
  {
    $match: {
      statusSet: "FAILED",
      statusSet: { $nin: ["SCHEDULED", "UNPAID"] }
    }
  },
  // 可选:展开分组返回原始记录,不需要返回明细可删除以下两个阶段
  { $unwind: "$originRecords" },
  { $replaceRoot: { newRoot: "$originRecords" } }
])

各聚合阶段作用说明:

  • $group:以auctioncode为分组键,$addToSet会将同组内的状态去重后存入数组,$push会保留组内所有原始记录
  • $match:同时满足两个条件:分组内存在FAILED状态、分组内不存在SCHEDULED和UNPAID状态,完全匹配需求
  • 末尾两个可选阶段用于还原原始记录结构,如果仅需要获取符合要求的auctioncode列表,删除即可,返回结果的_id字段即为符合条件的auctioncode

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:27:03