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

MongoDB聚合查询:未知球队字段值时统计同队两名球员平均跑动距离

解决方案

你可以通过以下聚合管道实现需求,无需提前预知二人所属球队:

db.matches.aggregate([
  // 初步筛选同时包含两名目标球员的比赛,降低后续计算开销
  {
    $match: {
      "players.name": { $all: ["Saka", "Aubameyang"] }
    }
  },
  // 提取两名目标球员的完整数据
  {
    $addFields: {
      targetPlayers: {
        $filter: {
          input: "$players",
          cond: { $in: ["$$this.name", ["Saka", "Aubameyang"]] }
        }
      }
    }
  },
  // 校验两名球员是否属于同一球队
  {
    $addFields: {
      isSameTeam: {
        $eq: [
          { $arrayElemAt: ["$targetPlayers.team", 0] },
          { $arrayElemAt: ["$targetPlayers.team", 1] }
        ]
      }
    }
  },
  // 过滤掉二人不同队的无效比赛
  {
    $match: { isSameTeam: true }
  },
  // 拆分目标球员数组为独立文档
  { $unwind: "$targetPlayers" },
  // 计算所有符合条件的跑动距离平均值
  {
    $group: {
      _id: null,
      avgDistanceRan: { $avg: "$targetPlayers.distanceRan" }
    }
  }
])

可选调整

如果需要分别统计两名球员各自同队出战时的平均跑动距离,只需将最后$group阶段的_id修改为$targetPlayers.name即可:

{
  $group: {
    _id: "$targetPlayers.name",
    avgDistanceRan: { $avg: "$targetPlayers.distanceRan" }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:45:09