Mongodb 如何计算猫鼬的平均数?
我的模式看起来像Mongodb 如何计算猫鼬的平均数?,mongodb,mongoose,Mongodb,Mongoose,我的模式看起来像 point:{type:Number,默认值:0}, 工作量:{type:Number,默认值:0}, 注意:{type:String}, 日期:{type:Date}, createDate:{type:Date}, dateInfoId:{type:String} 我试图通过传递特定的\u id来计算点和努力的平均值 我的代码看起来像 frequencies=[“mongo对象id”]; 频率.聚合([{ $项目:{ _身份证:{ $in:['$\u id',频率] },
point:{type:Number,默认值:0},
工作量:{type:Number,默认值:0},
注意:{type:String},
日期:{type:Date},
createDate:{type:Date},
dateInfoId:{type:String}
我试图通过传递特定的\u id
来计算点和努力的平均值
我的代码看起来像
frequencies=[“mongo对象id”];
频率.聚合([{
$项目:{
_身份证:{
$in:['$\u id',频率]
},
要点:{
$ne:['$point',0]
}
}
}, {
$group:{
_身份证:{
$in:['$\u id',频率]
},
平均值:{
$avg:“$point”
},
努力:{
$avg:“$efforce”
}
}
}],(错误,结果)=>{});
但是它总是返回
[{{u id:false,average:null,efforce:null}]
。我应该如何计算我的分数和努力的平均值?它必须是这样的:
Frequency.aggregate([{
$match: {
_id: {
$in: frequencies
}, point: { $ne: 0 }
}
}, {
$group: {
_id: null,
average: {
$avg: "$point"
},
effort: {
$avg: "$effort"
}
}
}])
此处
$match
将仅保留与通过的频率匹配的文档,其中点!=0
,然后您需要遍历所有文档以获得所需两个字段的平均值,因此$group
有助于做到这一点,其中\u id:null
或\u id:“
将遍历所有剩余文档,您无需在group阶段再次指定筛选器。$match而不是$project