【问题标题】:Select documents from one collection based on IDs stored in another in Meteor and MongoDB根据 Meteor 和 MongoDB 中存储在另一个集合中的 ID 从一个集合中选择文档
【发布时间】:2016-02-07 02:19:26
【问题描述】:

我有三个集合,Users(Meteor 内置)、Movies 和 Seen。 Seen 中的文档由一个电影 ID(电影集合中的电影 ID)和一个用户 ID(类似)组成,表明该用户已经看过该电影。

我只想获取当前用户看过的电影集合中的那些电影(文档)。

我知道如何从 Seen 中选择用户 ID 与当前用户 ID 匹配的文档。我是否从这一行制作一个电影 ID 数组,然后使用 Mongo 的 $in 运算符?最好的方法是什么?

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

    正如您已经提到的,您可以使用 Seen 集合中的文档,其 user ID 与当前用户的 ID 匹配,以创建一个电影 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));
    

    【讨论】:

      【解决方案2】:

      您已经掌握了正确的基本方法:

      var seenIds = Seen.find({ userId: Meteor.userId() }).map(function(doc){return doc.movieId});
      var seenMovies = Movies.find({_id: {$in: seenIds}});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 2023-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-18
        相关资源
        最近更新 更多