【问题标题】:how to use where condition in mongodb如何在mongodb中使用where条件
【发布时间】:2017-09-29 19:33:54
【问题描述】:

我有一个mongodb的集合,里面有“MoviesID, UserID, Rating”,所以这是描述用户如何评价不同的电影,一个用户可以评价不同的电影,当然一部电影可以被不同的评价用户。现在我想找到所有对目标用户评价相似电影的用户(例如:用户 5)。给类似电影评分意味着他们至少给同一部电影评分,或者更多。那么我应该如何找到所有与用户 5 评价相似电影的用户呢?我刚开始学习mongodb。谢谢!

【问题讨论】:

    标签: sql mongodb


    【解决方案1】:

    假设你有一个这样的集合:

    {
       movie: 1,
       user: 1,
       rating: 5
    }, {
       movie: 2,
       user: 5,
       rating: 5
    }, {
       movie: 3,
       user: 5,
       rating: 3
    }
    

    您可以在这里做的是找到用户 5 评分的所有电影,如下所示:

    db.collection.distinct("movie", { user: 5 }, function(err, movies) {
        // Will return array of distinct values for movies, where user is equal to 5.
        // From our collection above, this query will return [ 2, 3 ].
    
    })
    

    然后:

    db.collection.find({ movie: { $in: movies } }, function(err, result) {
        // Then we'll find the documents where movie is in the movies which
        // returned on our first query.
        // This will return [{ user: 5, ... }, { user: 1, ... }]
    })
    

    我只能在两个查询中考虑这样做。我还在考虑这是否可以通过使用聚合来完成。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢!我认为这可能有效。但是,我将如何在结果中删除 user:5 ?我的意思是,它和它自己不相似。
    • 如果我想输入用户怎么办?我必须使用python获取输入然后查询吗?
    【解决方案2】:

    要从 MongoDB 集合中查询数据,需要使用 MongoDB 的 find() 方法。

    find() 方法的基本语法如下 -

    >db.COLLECTION_NAME.find()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多