我有一个 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/