我想要返回另一个字段{文档ID字段}的Number
字段的平均值:
Comments.aggregate([
{$group:
{
_id: ($nid: req.adID), // here is the field I want to set to req.adID
adAvg:{$avg:"$stars"}
}
}
], function(err, resulat){
if(err) {
res.send(String(err));
}
res.send(resulat);
}
)
ID字段位于请求对象req.adID
中,我没有找到按查询(_id : 'req.adID')
进行分组的示例。
我的架构如下:
var CommentSchema = new Schema(
{
_id: Schema.Types.ObjectId, //scheme
nid:Number, // ad ID
posted: Date, // Date
uid: Number, // user ID
title: String, //String
text: String, // String
stars: Number //String
}
);
此外,如果有人可以为此查询编写返回数据,那就太棒了!
答案 0 :(得分:2)
根据您对该问题的后续评论,您的汇总看起来需要 $match
管道来查询与nid字段上的req.adID
匹配的文档, $group
管道的_id字段应该包含 $nid
字段表达式,以便按键成为您的不同组。以下管道应该产生所需的结果:
var pipeline = [
{ "$match": { "nid": req.adID } },
{
"$group": {
"_id": "$nid",
"adAvg": { "$avg": "$stars" }
}
}
]
Comments.aggregate(pipeline, function(err, result){
if(err) {
res.send(String(err));
}
res.send(result);
})