2017-09-29 56 views
0

我有一个包含“MoviesID,UserID,Rating”的mongodb集合,所以这是为了描述用户如何评价不同电影,并且用户可以评价不同电影,当然一部电影可以被不同的用户评分。现在我想找到所有与目标用户评分类似电影的用户。评级相似的电影意味着他们评分至少相同的电影,或更多。我的方法是找到目标用户的所有电影,然后查询也评价这些电影的用户。我有以下蒙戈外壳查询,它的工作原理:如何将mongodb查询转换为pymongo

var a = db.ratings.distinct("MovieID",{"UserID":"user"}); 
db.ratings.distinct("UserID",{"MovieID":{$in:a}})) 

而是因为我想要的输入,我试图pymongo以获取输入,我的代码是:

import sys 
import pymongo 
import re 
import codecs 

from pymongo import MongoClient 
client = MongoClient() 

db = client['moviesdb'] 

user = input("Enter the user: ") 

# #ratings = db.ratings 

from bson.son import SON 



import pprint 

a = db.ratings.distinct("MovieID",{"UserID":"user"}); 
pprint.pprint(db.ratings.distinct("UserID",{"MovieID":{"$in":a}})); 

,但结果是一个空数组, 我不知道为什么。那么pymongo代码有什么问题?或者有什么方法可以在shell中获得输入,所以我不需要编写Pymongo?谢谢!

回答

1

简单的导航错误。更改

a = db.ratings.distinct("MovieID",{"UserID":"user"}); 

a = db.ratings.distinct("MovieID",{"UserID":user});