트윗으로 채워지는 mongodb 인스턴스가 있고 저는 PyMongo를 드라이버로 사용하고 있습니다. 각 트윗에는 언어를 지정하는 필드가 있습니다. 나는 다음과 같은 집계 쿼리를 가지고 : 나는 다음과 같은 테스트 기능을 호출PyMongo 집계 스크립트가 응답이 없습니다
def get_top_k_hashtags(client, db_name, lang_list, k_filter):
k_filter_base = k_filter
k_filter = "$" + k_filter
dbo = client[db_name]
pipeline = [
{"$match": {"lang": {"$in": lang_list}}},
{"$project": {k_filter_base: 1, "_id": 0}},
{"$unwind": k_filter},
{"$group": {"_id": k_filter + ".text", "count": {"$sum": 1}}},
{"$sort": SON([("count", -1), ("_id", -1)])}
]
return dbo.tweets.aggregate(pipeline, allowDiskUse=True)
def test_get_top_k_hashtags(client, db_name, lang_list, k_filter):
frequency = []
cursor = get_top_k_hashtags(
client, db_name, lang_list, k_filter)
for document in cursor:
frequency.append({'hashtag': document['_id'],
'value': document['count']})
pprint(frequency)
write_json_file('hashtag_distribution', DATA_PATH, frequency)
test_get_top_k_hashtags(client, 'twitter', ['ru'], 'entities.hashtags')
내가이 경우, 특정 언어에서 모든 해시 태그에 대한 총 수를 받고있는 중이 야 'ru'. 나는 'ru'와 일치하는 약 17K 짹짹과 'en'을위한 13million 짹짹이 있습니다. 내가 'ru'트윗으로 실행할 때 몽고 셸과 스크립트에서 모두 작동하지만 '트위터'트윗으로 시도하면 스크립트가 멈추고 완료되지 않습니다.
mongo 셸에서 'en'에 대한 집계가 성공적으로 완료되었습니다. 스크립트에서 실행할 때 mongo 셸에서 작업을 검사하여 시작하고 완료하는 것을 볼 수는 있지만 출력을 얻지는 못합니다.
파이썬 스크립트의 경우 데이터베이스에서 성공적으로 처리되었지만 컬렉션의 더 큰 하위 집합을 집계하려고하면 결과가 반환되지 않습니다. 나는 Pymongo에서 예외를 잡으려고 애썼다. 나는 시간이 부족하다고 생각하지만 그것이 무엇인지 어떻게 잡을 수 있는지 알 수 없다.