Mongoose avg函数按请求字段

时间:2015-11-03 09:08:57

标签: node.js mongodb mongoose average

我想要返回另一个字段{文档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
    }
);

此外,如果有人可以为此查询编写返回数据,那就太棒了!

1 个答案:

答案 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);
})