2017-09-29 9 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コードの問題は何ですか?あるいは、シェルで入力を得るための方法があるので、Pymongoを書く必要はありませんか?ありがとう!

答えて

1

シンプルなパイロットエラー。

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

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

に変更します
関連する問題