2017-09-29 1 views
0

"MoviesID, UserID, Rating"이 포함 된 mongodb 컬렉션이 있으므로 사용자가 다른 영화를 평가하는 방법을 설명하고 사용자가 다른 영화를 확실히 평가할 수 있습니다. 다른 사용자가 영화를 평가할 수 있습니다. 이제 대상 사용자와 비슷한 영화를 평가하는 모든 사용자를 찾고 싶습니다. 비슷한 영화를 평가한다는 것은 적어도 같은 영화 또는 그 이상을 평가한다는 것을 의미합니다. 내 방식은 대상 사용자의 모든 영화를 찾은 다음이 영화를 평가하는 사용자를 쿼리하는 것입니다. 나는 몽고 쉘 쿼리를 다음했으며, 작동 :mongodb 쿼리를 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}})); 

하지만 결과는 하늘의 배열입니다 :

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

을하지만 입력을 원하기 때문에, 내가 입력을 얻을 수 pymongo을 시도, 내 코드는 , 왜 그런지 모르겠다. 그렇다면 pymongo 코드의 문제점은 무엇입니까? 아니면 Pymongo를 쓸 필요가 없도록 셸에서 입력을 얻을 수있는 방법이 있습니까? 감사!

답변

1

간단한 파일럿 오류.

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

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

에 변경
관련 문제