如何加入两个MongoDB集合+组?

时间:2019-04-01 09:16:53

标签: mongodb mongodb-query

我是MongoDB的新手,查询有问题:

我有两个收藏夹:

  1. 集合:“ output2”:带有“ movieid”,“ customerid”,“ rating”,“ date”
{ 
    "_id" : ObjectId("5c9dc666d73cde2924cc0a4d"), 
    "movieid" : NumberInt(1), 
    "customerid" : NumberInt(1488844), 
    "rating" : NumberInt(3), 
    "date" : ISODate("2005-09-06T00:00:00.000+0000")
}
  1. 收藏:“ movie_titles”:带有“ movieid”,“ year”,“ title”
{ 
    "_id" : ObjectId("5c9dc68ad73cde2924cd94db"), 
    "movieid" : NumberInt(1001), 
    "year" : NumberInt(2001), 
    "title" : "Blow Dry"
}

我必须找到电影“恐龙星球”的每年和每月的平均评级,并按年和月的升序排列。

结果应如下所示:

{ 
    "_id" : NumberInt(515436), 
    "year" : NumberInt(2001),
    "month" : NumberInt(10),
    "Average" : 3.0, 
    "Movietitle": "Dinosaur Planet"
}

我试图用不同的方法解决它,但没有结果。

db.getCollection("output2").aggregate([ 
    {
   "$lookup":
     {
       from: "movie_titles",
       localField: "movieid",
       foreignField: "movieid",
       as: "movietitle"
     }
},

    {
        "$group": { 
            "_id": {$year: '$date'}, 
            "Average": { "$avg": "$rating" }
        }
    },
    {
        "$match": {      
            "title": "Dinosaur Planet"
        }
    }
]);

喜欢此查询。所以我的问题是我走的路是否正确,或者是否有人有解决此问题的好主意?

1 个答案:

答案 0 :(得分:0)

您应该在jvmArguments查询之后使用$match,匹配字段将是$lookup而不是movietitle.title

title