我有一个
的集合{
id
distance
time
date
userId
}
我想得到给定userId的每周平均距离。 到目前为止,我设法
Model.aggregate([{
$project : {
year : {
$year : "$date"
},
week : {
$week : "$date"
}
}
}, {
$group : {
_id : {
year : "$year",
week : "$week"
}
total : {
$sum: 1
}
}
} ]
我的输出是我每周在我的数据库中的注册数量,但我不能再进一步了解
我非常感谢任何建议或帮助
先谢谢
答案 0 :(得分:0)
感谢大家, 最后这对我有用
Model.aggregate([
{ $match: { userId:mongoose.Types.ObjectId(userId) }},
{ $project : {
year : { $year : "$date" },
week : { $week : "$date" },
userId: "$userId",
distance: "$distance",
}
},
{ $group : {
_id : {
year : "$year",
week : "$week"
},
distance:{ $avg: "$distance" },
total : { $sum: 1 }
}
}]
所以第一个匹配只获得userId的行(注意id必须是一个mongoose Object id,而不是字符串或数字)。
然后我们使用年份和周作为id避免在不同年份同一周,最后我们可以得到平均值$ avg