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 } );
另外,如果有人可以写这个查询的返回数据,这将是伟大的!
从你对问题的后续评论看来,你的聚合需要$match
pipe道来查询与nid字段上的req.adID
匹配的文档,你的$group
pipe道的_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); })