如何 return 将前一个流水线阶段的结果放入新字段

How to return the result of a previous pipeline stage into a new field

我有这个功能 returns 一组机构信息:

const getInstitutionsInfo = async () => {
  const sum_current_students = {
    $addFields: { number_of_current_students: { $size: "$current_students" } },
  };
  const sort_by_largest_number_of_current_students = {
    $sort: {
      number_of_current_students: -1,
    },
  };
  
  const pipeline = [
    sum_current_students,
    sort_by_largest_number_of_current_students,
  ];
  const response = await Institution.aggregate(pipeline);
  return response;
};

结果是一个数组:

[Institution_1_data, Institution_2_data ... ]

其中每个 Institution_X_data 都是一个对象。

我想在管道的最后添加另一个阶段,最终结果如下:

{
  result: [Institution_1_data, Institution_2_data ... ]
}

我尝试了 $reduce 的不同组合,但我无法达到那个结果。

添加$group阶段

{
  "$group": {
    "_id": null,
    "result":{
      "$push" : "$$ROOT"
    }
  }
}

MongoPlayground | System Variables


const getInstitutionsInfo = async () => {
  const sum_current_students = {
    $addFields: { number_of_current_students: { $size: "$current_students" } },
  };
  const sort_by_largest_number_of_current_students = {
    $sort: {
      number_of_current_students: -1,
    },
  };
  const group_students = {
    $group: {
      _id: null,
      result: {$push: "$$ROOT"}
    }
  };
  
  const pipeline = [
    sum_current_students,
    sort_by_largest_number_of_current_students,
    group_students
  ];
  return await Institution.aggregate(pipeline);
};