假设我在我的收藏中有'电影'对象,如下图所示。电影有许多演员,演员属于很多电影。许多一对多。
如何创建另一个由独特的“actor”元素组成的集合?请记住,一些演员将被列入多部电影中。
{
"_id" : ObjectId("4edcffa5f320646bc8bd76b4"),
"directed_by" : [
"John Gilling"
],
"forbid:genre" : null,
"genre" : [ ],
"guid" : "#9202a8c04000641f8000000000b02e5d",
"id" : "/en/pirates_of_blood_river",
"initial_release_date" : "1962",
"name" : "Pirates of Blood River",
"starring" : [
{
"actor" : {
"guid" : "#9202a8c04000641f800000000006823e",
"id" : "/en/christopher_lee",
"name" : "Christopher Lee",
"lc_name" : "christopher lee"
}
},
{
"actor" : {
"guid" : "#9202a8c04000641f80000000001de22e",
"id" : "/en/oliver_reed",
"name" : "Oliver Reed",
"lc_name" : "oliver reed"
}
},
{
"actor" : {
"guid" : "#9202a8c04000641f80000000003b41da",
"id" : "/en/glenn_corbett",
"name" : "Glenn Corbett",
"lc_name" : "glenn corbett"
}
}
]
}
答案 0 :(得分:0)
这可以在客户端应用程序中完成,也可以通过mongodb中的聚合完成 - 例如,您可以使用输出集合运行mapreduce作业。在地图步骤中,给定一个电影文档,你可以发出键值对(actor.guid,{[other actor details]}),并在reduce步骤中只返回一组细节(你也可以计算一下这个数字)如果你想的话,演员在这一点上的电影。