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

寻求MongoDB开发专家协助:将指定MySQL查询转换为MongoDB语句

对应的MongoDB聚合查询

以下是实现你需求的MongoDB聚合管道语句:

db.table_name.aggregate([
  // 过滤过去15分钟内的数据
  {
    $match: {
      $expr: {
        $gte: [
          "$column4",
          { $subtract: [new Date(), 15 * 60 * 1000] } // 15分钟转换为毫秒
        ]
      }
    }
  },
  // 按column4升序排序,保证后续拼接顺序正确
  {
    $sort: { column4: 1 }
  },
  // 按column_1、column_2分组,收集对应字段值
  {
    $group: {
      _id: {
        column_1: "$column_1",
        column_2: "$column_2"
      },
      data_1: { $push: "$column3" },
      data_2: { $push: "$column5" }
    }
  },
  // 调整输出字段结构,贴近MySQL查询结果格式
  {
    $project: {
      _id: 0,
      column_1: "$_id.column_1",
      column_2: "$_id.column_2",
      data_1: 1,
      data_2: 1
    }
  }
])

语句解析

  • $match阶段:通过$expr计算当前时间减去15分钟的时间戳,过滤出column4晚于该时间的文档,对应MySQL中的WHERE条件。
  • $sort阶段:必须在分组前执行,因为$push会保留文档进入分组阶段的顺序,这一步保证了data_1和data_2的元素严格按column4升序排列,对应MySQLgroup_concat里的ORDER BY column4 ASC。
  • $group阶段:以column_1和column_2作为分组键,用$push分别收集每组内的column3和column5值到数组中。
  • $project阶段:将分组生成的_id字段拆分为独立的column_1和column_2,并移除默认的_id字段,让输出结构更贴近原MySQL查询结果。

可选调整

如果需要将data_1和data_2从数组转为逗号分隔的字符串(完全匹配MySQLgroup_concat的默认行为),可以在$project阶段使用$join操作符(MongoDB 4.4及以上版本支持):

data_1: { $join: { input: "$data_1", separator: "," } },
data_2: { $join: { input: "$data_2", separator: "," } }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:31:12