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

MongoDB聚合管道内如何将文档转为含node和cursor的edges结构?

MongoDB聚合管道转换为edges结构解决方案

直接用$project先构造单个文档的edge格式,再通过$group将所有edge收集到edges数组中,就能在聚合管道内完成转换,无需后续处理:

db.collection.aggregate([
  // 构造单个edge对象,包含完整原文档和_id作为cursor
  {
    $project: {
      edge: {
        node: "$$ROOT",
        cursor: "$_id"
      }
    }
  },
  // 将所有edge聚合为单个结果里的edges数组
  {
    $group: {
      _id: null,
      edges: { $push: "$edge" }
    }
  },
  // 可选:移除结果中的_id字段(不需要可省略)
  {
    $project: {
      _id: 0
    }
  }
])

关键说明

  • $$ROOT会引用当前管道阶段的完整文档,确保node保留原文档的全部20个字段。
  • $group指定_id: null是为了把所有文档聚合为单个顶层对象,保证最终结构是外层包含edges数组的格式。
  • 之前用$map没成功,是因为$map针对的是数组字段的内部元素转换,而这里需要处理顶层的文档集合,先单个构造再聚合是更适配的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:31:18