node.js - Mongoose avg 函数(按请求字段)

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

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

最佳答案

从您对该问题的后续评论来看,您的聚合似乎需要 $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);
})

关于node.js - Mongoose avg 函数(按请求字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495136/

相关文章:

node.js - mongodb 使用 mongoose : E11000 duplicate key error on . 保存嵌套集合

node.js - 为什么当我运行 Express 服务器(React.js)时,我的浏览器显示空白页面?

javascript - 在执行后续步骤之前返回异步的 Sequelize 结果

javascript - Mongoose - 检测重复字段

javascript - 为什么我必须在 mongoose 中使用 `toObject()` 来确定对象是否具有属性?

mongodb - 如何限制 MongoDB 的更新脚本?

javascript - SEQUELIZE 插入行时不会自动递增 id?

javascript - 使用 dnode 从服务器向客户端发送消息

MongoDB : Remove last two characters from String

node.js - Mongoose findOneAndUpdate 和 runValidators 不工作