收藏A:以“mid”作为id:
的电影列表> db.moviesCollection.find().pretty()
{
"_id" : ObjectId("57266290482b0b6d8ad6a8bd"),
"mid" : 1,
"title" : "Toy Story (1995)",
"genres" : "Animation|Children's|Comedy"
}
{
"_id" : ObjectId("57266290482b0b6d8ad6a8be"),
"mid" : 3,
"title" : "Grumpier Old Men (1995)",
"genres" : "Comedy|Romance"
}
收藏B:评级电影“mid”的列表
> db.ratingsCollection.find().pretty()
{
"_id" : ObjectId("57266359482b0b6d8ad6b7e8"),
"uid" : 1,
"mid" : 1193,
"rating" : 5,
"timestamp" : 978300760
}
{
"_id" : ObjectId("57266359482b0b6d8ad6b7e9"),
"uid" : 1,
"mid" : 661,
"rating" : 3,
"timestamp" : 978302109
}
我的问题:我如何从(moviesCollection)获得所有电影片头,(ratingsCollection),评级电影的标题? thx提前。
答案 0 :(得分:2)
db.r - >评级 db.m - >电影
聚合框架附带了3.2版本的$ lookup - 这是建议解决方案的核心部分。
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'android'.
> Cannot evaluate module google-play-services_lib : Configuration with name 'debug' not found.
欢迎任何彗星!
答案 1 :(得分:1)
你可以这样做:
db.moviesCollection.aggregate([
{
$match: {
"mid": {
$in: db.ratingsCollection.find().map(function(r) { return r.mid; })
}
}
}
])
答案 2 :(得分:-3)
select * from A where exists (select mid from B where B.mid = A.mid)