【发布时间】:2018-03-11 21:26:26
【问题描述】:
我有一个mongodb的集合,里面有“MoviesID, UserID, Rating”,所以这是描述用户如何评价不同的电影,一个用户可以评价不同的电影,当然一部电影可以被不同的评价用户。现在我想找到所有对目标用户评价相似电影的用户。给类似电影评分意味着他们至少给同一部电影评分,或者更多。我的方法是找到目标用户的所有电影,然后查询也给这些电影评分的用户。我有以下 mongo shell 查询,它可以工作:
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?谢谢!
【问题讨论】:
标签: mongodb pymongo pymongo-3.x