Menu
CoddyTech

组内平均值

本课属于 Coddy Node.js 学习旅程的“使用 MongoDB 的数据库”单元。第 22 课,共 29 课。

一组文档可以计算多个汇总值。分组表达式决定哪些记录归为一组;每个累加器都会计算一个单独的输出字段。

{$group: {
    _id: '$team',
    players: {$sum: 1},
    averageScore: {$avg: '$score'}
}}

同一支队伍的两名球员分别得 8 分和 12 分时,players 的值是 2,averageScore 的值是 10。带引号的 '$score' 会读取每名输入球员的得分。把相同的思路用于书籍年份。输出字段名由你决定;字段引用用于标识要计算平均值的那些值。

challenge icon

挑战

简单

这是一个小型练习项目。项目已提供设置,只编辑 exercise.js。

按流派对书籍分组,并返回 _id、数量和 averageYear。按 _id 升序排列输出。运行后:classic 的数量为 1,averageYear 为 1815;scifi 的数量为 2,averageYear 为 1972。

亲手试试

export async function exercise(books) {
    return await books
        .aggregate([{ $group: { _id: '$genre', count: { $sum: 1 } } }, { $sort: { _id: 1 } }])
        .toArray();
}

使用 MongoDB 的数据库中的所有课

自己练习: Express 在线编辑器