如何将mongodb查询转换为pymongo

时间:2017-09-29 22:53:51

标签: mongodb pymongo pymongo-3.x

我有一个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?谢谢!

1 个答案:

答案 0 :(得分:1)

简单的飞行员错误。变化

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

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