Mongoose聚合列为平均值,输出为附加字段

时间:2017-12-15 16:40:31

标签: node.js mongodb

我想查询数据库得到一个分组结果,该结果将计算平均结果,另外,从对象输出其他字段。

我有一个这样的架构:

    resturantName: {type:String},
    resturantLocation: {type:String},    
    comfort: {type: Number, min: min, max: max, default: 0},
    cleanliness: {type: Number, min: min, max: max, default: 0},
    valueForMoney: {type: Number, min: min, max: max, default: 0},
    avgRating: {type: Number}

我根据'resturantLocation'查询数据库,并想计算'total_average_rating',另外输出餐馆名称&位置。

我尝试过多次查询,但我一直遇到各种错误,这是我最近的尝试:

query = [
    { "$match": { "resturantName": resturantName} },
    {
        "$group": {
            "_id": 1,
            "resturantName": resturantName,
            "resturantLocation": "resturantLocation",
            "total_average_rating": { "$avg": "$avgRating" }
        }
    }   
];

我研究过使用 $ project ,但我怀疑它符合我的需求。

请告知。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下查询。

$first保留其他字段& $avg获得平均评分。

query = [
  { "$match": { "resturantName": resturantName} },
  { "$group": { 
       "_id": "$resturantName", 
       "resturantLocation": {"$first":"$resturantLocation"}, 
       "total_average_rating": { "$avg": "$avgRating" 
        } 
     } 
  }
];