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

MongoDB动态字段名嵌套对象投影:获取task7全字段需求

MongoDB动态字段聚合查询调整需求

我的数据库结构如下,包含动态命名的字段:

{
  id: 1,
  name: "N1",
  tasks: {
    project1: {
      task7: {
        count: 10,
        time: 1.2
      },
      task3: {
        count: 56,
        time: 1050
      }
    },
    project25: {
      task7: {
        count: 25,
        time: 10
      }
    }
  }
}

我参考了一段聚合代码,它几乎满足需求,但目前只返回task7的count字段,我需要获取task7内的全部字段(count和time)。原代码如下:

db.collection.aggregate([
  {
    $project: {
      _id: 0,
      tasks: {
        $objectToArray: "$tasks"
      }
    }
  },
  {
    $match: {
      "tasks.v.task7": {
        $exists: true
      }
    }
  },
  {
    $project: {
      tasks: {
        $arrayToObject: {
          $filter: {
            input: {
              $map: {
                input: "$tasks",
                in: {
                  "k": "$$this.k",
                  "v": "$$this.v.task7.count"
                }
              }
            },
            cond: "$$this.v"
          }
        }
      }
    }
  }
])

作为新手我尝试修改但没成功,希望能帮忙调整代码以返回多个字段。

更新:输出格式要求

希望输出文档以id嵌套,格式如下:

{
  "id": 1,
  "name": "N1",
  "tasks_project1": {
      "k": "task7",
      "v": {
        "count": 10,
        "time": 1.2
      }
  },
  "tasks_project25": {
      "k": "task7",
      "v": {
        "count": 25,
        "time": 10
      }
    }
}

更新2

Ruben在评论区提供了符合需求的答案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:35:30