You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mongoose调用MongoDB聚合管道统计数据时报错BadValue如何解决

MongoDB Aggregation报错code=2 BadValue问题解决方案

错误原因

  • 问题出在$match阶段的字段声明规则错误:MongoDB聚合管道中,只有在聚合算子内引用字段取值时才需要给字段名加$前缀,直接作为匹配键的文档字段不需要加前缀。
  • 你代码中$match里写的$ratingsAverage属于非法键名,MongoDB无法识别以$开头的自定义文档字段,因此抛出BadValue参数错误。

修正后的代码

exports.getTourStats = async (req, res) => {
try {

    const stats = await Tour.aggregate([
        {
            // 去掉匹配字段前的$符号即可
            $match: { ratingsAverage: { $gte: 4.5 } }
        },
        {
            $group: {
                _id: null,
                avgRating: { $avg: '$ratingsAverage' },
                avgPrice: { $avg: '$price' },
                minPrice: { $min: '$price' },
                maxPrice: { $max: '$price' },
            }
        }
    ]);

    res.status(200).json({
        status: 'Success',
        data: {
            stats
        },
    });

} catch (err) {
    res.status(400).json({
        message: err
    })
}

内容的提问来源于stack exchange,提问作者siddharth 28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:06:03