根据存储在Meteor和MongoDB中另一个集合中的ID,从一个集合中选择文档

时间:2016-02-06 18:08:19

标签: mongodb meteor

我有三个系列,用户(Meteor内置),电影和Seen。 Seen中的文档包含电影ID(电影集合中的电影ID)和用户ID(类似),表示该用户已看过该电影。

我想只获得当前用户看过的电影收藏中的那些电影(文档)。

我知道如何从Seen中选择其用户ID与当前用户ID相匹配的文档。我是否从此行创建了一系列电影ID,然后使用Mongo的$ in运算符?最好的方法是什么?

2 个答案:

答案 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}});