Arrays Mongodb使用moviename从嵌套数组中获取平均评级
我是MongoDB的新手。我有一系列电影,如图所示 有些电影有MovieView,有些电影还没有MovieReview。我想要的是列出电影的平均收视率和所有电影的名称Arrays Mongodb使用moviename从嵌套数组中获取平均评级,arrays,mongodb,average,Arrays,Mongodb,Average,我是MongoDB的新手。我有一系列电影,如图所示 有些电影有MovieView,有些电影还没有MovieReview。我想要的是列出电影的平均收视率和所有电影的名称 { "_id" : ObjectId("5ba65d9cdfbc44415d0edaec"), "MovieName": "King Kong" "avgAge" : 9.0 } { "_id" : ObjectId("5ba65d9cdfbc44415d0edaec"), "MovieNa
{
"_id" : ObjectId("5ba65d9cdfbc44415d0edaec"),
"MovieName": "King Kong"
"avgAge" : 9.0
}
{
"_id" : ObjectId("5ba65d9cdfbc44415d0edaec"),
"MovieName": "King Kong"
"avgAge" : 9.0
}
我尝试了以下代码,但只得到了平均等级的id
db.movies.aggregate([
{ $unwind: "$MovieReview" },
{ $group : { _id: "$_id", avgRating : { $avg : "$MovieReview.Rating" }}},
]);
结果
{
"_id" : ObjectId("5ba65d9cdfbc44415d0edaec"),
"avgRating" : 9.0
}
/* 2 */
{
"_id" : ObjectId("5ba65d9cdfbc44415d0edaeb"),
"avgRating" : 10.0
}
我认为解决办法很简单,但我无法弄清楚或者我不知道该寻找什么。任何帮助都将不胜感激。谢谢。您的问题是您没有使用MovieName吗?如果是这样,您应该像这样修改代码
db.movies.aggregate([
{
$unwind: "$MovieReview"
},
{
$group : {
_id: "$_id",
MovieName: { $first: "$MovieName" },
avgRating : { $avg : "$MovieReview.Rating" }
}
},
])) 在这种情况下,按
\u id
分组是没有意义的。如果计算平均值所需的所有评级都包含在单个文档的MovieRating
数组中,那么这就是您想要的:
db.movies.aggregate({
$addFields: {
avgRating: { $avg: "$MovieReview.Rating" }
}
})
对
MovieName
使用$first
聚合。。。像MovieName:{'$first':'$MovieName'}
谢谢你,收到了。如果我想要一部平均评分为0的还没有评论的电影呢