2017-01-11 52 views
0

我在MongoDB中的簡單數據庫中有兩個集合:電影和演員。在電影中收集一個條目是這樣的:mongodb中的「加入」運算符

MOVIES COLLECTION 
    { 
    "_id" : ObjectId("id1"), 
    "pre_mongified_id" : 19, 
    "name" : "Borovo' Institut", 
    "year" : 1984 
    } 

一個在演員的集合項看起來是這樣的:

ACTORS COLLECTION 
{ 
    "_id" : ObjectId("actor1"), 
    "pre_mongified_id" : 20, 
    "first_name" : "asdf", 
    "second_name" : "asdf" 
    "roles" : [ 
    { 
    "movie_id": ObjectId("id1"), 
    "role": "Huseini" 
    } 
    ] 
} 

所以我的問題是:我怎麼能「加盟」的集合,使我可以獲得關於演員的信息,以及他演奏的電影的名稱(名稱屬性)。所以,而不是「角色」數組中的「movie_id」,我想獲得電影名稱?

+0

你需要1)的MongoDB 3.4 2)瞭解集合$查找一些信息3)嘗試寫一些代碼 –

回答

1

你需要有MongoDB的版本> = 3.2

db.MOVIES.aggregate([{ 
    $lookup: { 
      from: "ACTORS", 
      localField: "_id", 
      foreignField: "roles.movie_id", 
      as: "MOVIES_ACTOR_DETAILS" 
     } 
}]) 


db.ACTORS.aggregate([{ 
    { 
     $unwind: "$roles" 
    }, 

    $lookup: { 
      from: "MOVIES", 
      localField: "movie_id", 
      foreignField: "_id", 
      as: "ACTOR_MOVIES" 
     } 
}]) 

瞭解更多詳情請查看mongodb lookup