【发布时间】:2012-10-11 00:32:04
【问题描述】:
我有一个像这样的简单数据库布局:
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。有什么想法吗?
非常感谢
【问题讨论】:
-
请注意,您不需要在第一步中投影字段 sexCount 或 avgAge,因为这些字段是您将在 $group 步骤中计算的字段。
标签: node.js mongodb mongoose aggregation-framework