如何 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);
};
我有这个功能 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);
};