Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何计算猫鼬的平均数?_Mongodb_Mongoose - Fatal编程技术网

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