mongoose平均function按请求字段

我想通过另一个字段(文档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 ,我没有find一个查询分组的例子(_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 } ); 

另外,如果有人可以写这个查询的返回数据,这将是伟大的!

从你对问题的后续评论看来,你的聚合需要$matchpipe道来查询与nid字段上的req.adID匹配的文档,你的$grouppipe道的_id字段应该有$nid字段expression式,这样它通过密钥成为你独特的群体。 以下pipe道应该产生所需的结果:

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