如何在mongodb中使用where条件

Posted

技术标签:

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

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

【讨论】:

以上是关于如何在mongodb中使用where条件的主要内容,如果未能解决你的问题,请参考以下文章

使用具有嵌套或条件的多个 where(或 AND)?

如何在使用 graphql 和 mongodb 的查询中使用“where”参数?

我如何在春季数据mongodb中使用$ where?

根据id获取数据

MongoDB 条件查询和排序

有没有办法在 MongoDB 中获取具有 WHERE (SQL) 等条件的字段总和