我有三个系列,用户(Meteor内置),电影和Seen。 Seen中的文档包含电影ID(电影集合中的电影ID)和用户ID(类似),表示该用户已看过该电影。
我想只获得当前用户看过的电影收藏中的那些电影(文档)。
我知道如何从Seen中选择其用户ID与当前用户ID相匹配的文档。我是否从此行创建了一系列电影ID,然后使用Mongo的$ in运算符?最好的方法是什么?
答案 0 :(得分:2)
正如您已经提到的,您可以使用Seen
ID与当前用户ID匹配的user
集合中的文档来制作一系列电影ID,然后您可以使用在Movies
集合上。如下所示:
var seen = Seen.find({ "userId": Meteor.userId() }).fetch(); // get Seen documents
var movieIds = seen.map(function (s){ return s.movieId; }); // get seen movie IDs list
var seenMovies = Movies.find({"_id": { "$in": movieIds }}).fetch(); // get the seen movies
console.log(JSON.stringify(seenMovies, null, 4));
答案 1 :(得分:1)
您已经掌握了基本方法:
var seenIds = Seen.find({ userId: Meteor.userId() }).map(function(doc){return doc.movieId});
var seenMovies = Movies.find({_id: {$in: seenIds}});