javascript - 在 MongooseJs 中查找特定类型的平均值

标签 javascript node.js mongodb mongoose

我有一个 MongoDB 集合“Marks”,如下所示

 _id   Student_id   Subject  Mark
   1    111          AAA      9
   2    111          BBB      5
   3    111          CCC      7
   4    222          AAA      10
   5    222          CCC      6
   6    222          BBB      8

我需要使用MONGOOSEJS找到student_id=111在3个科目中的平均分。我得到了一个解决方案

var Mark = mongoose.model('mark', new Schema({
  Student_id: Number,
  Subject: String,
  Mark: Number
}));

Mark.aggregate([
    { $group: {
        _id: '$Student_id',
        markAvg: { $avg: '$Mark'}
    }}
], function (err, results) {
    if (err) {
        console.error(err);
    } else {
        console.log(results);
    }
}
);

输出为

    [ { _id: 222, markAvg: 8 }, { _id: 111, markAvg: 7 } ]

当我将student_id:111作为参数传递时,我只需要{_id:111,markAvg:7}。 请任何人提出答案。

最佳答案

您需要添加 $match元素添加到管道顶部,以将集合中的文档过滤为您想要作为 $group 输入的文档:

Mark.aggregate([
    { $match: { Student_id: 111 } },
    { $group: {
        _id: '$Student_id',
        markAvg: { $avg: '$Mark'}
    }}
], function (err, results) {
    if (err) {
        console.error(err);
    } else {
        console.log(results);
    }
});

关于javascript - 在 MongooseJs 中查找特定类型的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13067208/

相关文章:

javascript - map 中的可拖动标记

node.js - 如何等待发货完成后再从商店挑选。 Ngrx相关问题

javascript - 检查 MongoDB 的登录凭据不起作用

r - 这是 mongolite 包中的错误吗?

javascript - Chart JS动态图表

javascript - AngularJS - 计时器指令。与模态视图共享间隔

php - 有没有办法将 PHP 值包含在 javascript 函数中?

javascript - 使用 EJS 将 MySQL 查询结果显示为 HTML

javascript - 使用具有多个 url 和可选参数的 express.Router()

mongodb - 如何只返回选定的几个嵌入对象的对象?