Mongodb的平均值,其中值不为空

  • 本文关键字:平均值 Mongodb mongodb
  • 更新时间 :
  • 英文 :


我想计算条件评级不同为0的评级平均值,因为评级默认为0,这就是返回不正确比率的原因

.aggregate([
{ $match : { id : sessionId }},
{
$group: {
_id: null,
countAverageRate: {
$avg: '$pupilRate'},
}]);

$average运算符将给出该字段在所有文档中的平均值。

要获得过滤值的部分平均值,使用$cond对所需值进行计数和求和,并单独计算平均值。

.aggregate([
{ $match : { id : sessionId }},
{$group: {
_id: null,
countAverageRate: {
$avg: '$pupilRate'},
ratedCount: {$cond: {
if: {$gt:['$pupilRate', 0]},
then: '$pupilRate',
else: 0
}},
ratedSum: {$sum: {
if: {$gt:['$pupilRate', 0]},
then: 1,
else: 0
}} 
},
{$addFields: {
ratedAverage: {$divide:['$ratedCount', '$ratedSum']}
}}
]);

最新更新