我想查询数据库得到一个分组结果,该结果将计算平均结果,另外,从对象输出其他字段。
我有一个这样的架构:
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 ,但我怀疑它符合我的需求。
请告知。
答案 0 :(得分:1)
您可以尝试以下查询。
$first
保留其他字段& $avg
获得平均评分。
query = [
{ "$match": { "resturantName": resturantName} },
{ "$group": {
"_id": "$resturantName",
"resturantLocation": {"$first":"$resturantLocation"},
"total_average_rating": { "$avg": "$avgRating"
}
}
}
];