Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Mongodb使用moviename从嵌套数组中获取平均评级_Arrays_Mongodb_Average - Fatal编程技术网

Arrays Mongodb使用moviename从嵌套数组中获取平均评级

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

我是MongoDB的新手。我有一系列电影,如图所示

有些电影有MovieView,有些电影还没有MovieReview。我想要的是列出电影的平均收视率和所有电影的名称

{
    "_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的还没有评论的电影呢