Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用MongoDB聚合计算计数和平均值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的数据库布局,如下所示:

client
    id
    sex (male/femalE)
    birthday (datE)    

client
    id
    sex (male/femalE)
    birthday (datE)  

(...)

我正在尝试编写一个汇总命令,输出我有多少男性和女性客户,我也想输出男性和女性的平均年龄,不确定我是否可以在同一个命令中执行此操作或我需要2个独立的?

// Count of males/females,average age
Clients.aggregate({
    $project : {"sex"      : 1,"sexCount" : 1,"birthday" : 1,"avgAge"   : 1
               } 
    },{
        $match: {"sex": {$exists: truE}} 
    },{
        $group: {
                    _id      : "$sex",sexCount : { $sum: 1 },avgAge   : { $avg: "$birthday" },}
    },{ $sort: { _id: 1 } },function(err,sex_dbres) {
            if (err)
                throw err;
            else{
                (...)
            }
        });

使用上面的代码,我得到男性/女性的数量,但avgAge为0.任何想法?

非常感谢

@H_674_19@解决方法
日期对象不能“平均”,但数字可以.您可以将日期转换为时间戳值,然后从中查找平均值.但是,这仍然不是平均年龄,您需要从聚合函数之外的当前日期中减去结果.

一个选择是假设年龄只能用日期的一部分来计算(也就是说,如果我出生在2000年12月1日,在今天的报告中,我将是12岁,而不是11岁).在这种情况下,您可以使用date operators提取年份值.

$project : {"sex"      : 1,"year" : {$year: "$birthday"},} 
},$project : {"sex"      : 1,"age" : {$subtract: [2012,'$year']},

大佬总结

以上是大佬教程为你收集整理的node.js – 使用MongoDB聚合计算计数和平均值全部内容,希望文章能够帮你解决node.js – 使用MongoDB聚合计算计数和平均值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。