【发布时间】:2017-09-29 19:33:54
【问题描述】:
我有一个mongodb的集合,里面有“MoviesID, UserID, Rating”,所以这是描述用户如何评价不同的电影,一个用户可以评价不同的电影,当然一部电影可以被不同的评价用户。现在我想找到所有对目标用户评价相似电影的用户(例如:用户 5)。给类似电影评分意味着他们至少给同一部电影评分,或者更多。那么我应该如何找到所有与用户 5 评价相似电影的用户呢?我刚开始学习mongodb。谢谢!
【问题讨论】:
我有一个mongodb的集合,里面有“MoviesID, UserID, Rating”,所以这是描述用户如何评价不同的电影,一个用户可以评价不同的电影,当然一部电影可以被不同的评价用户。现在我想找到所有对目标用户评价相似电影的用户(例如:用户 5)。给类似电影评分意味着他们至少给同一部电影评分,或者更多。那么我应该如何找到所有与用户 5 评价相似电影的用户呢?我刚开始学习mongodb。谢谢!
【问题讨论】:
假设你有一个这样的集合:
{
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, ... }]
})
我只能在两个查询中考虑这样做。我还在考虑这是否可以通过使用聚合来完成。
我希望这会有所帮助。
【讨论】:
要从 MongoDB 集合中查询数据,需要使用 MongoDB 的 find() 方法。
find() 方法的基本语法如下 -
>db.COLLECTION_NAME.find()
【讨论】: