2017-02-17 4 views
0

나는 각 문서가 다른 사람의 인구 통계 정보 (유일한 식별자, 이름, 주소 등) 인 MongoDB 컬렉션을 가지고있다.MongoDB 배열에서 사전을 카운트하는 방법은 무엇입니까?

Python/pymongo를 사용하여 데이터베이스에 새 데이터를 구문 분석 할 때 기존 식별자에 해당하는 새 항목을 찾고 끝에 가장 많이 사용하는 항목을 사용하기 위해 새 항목의 개수를 추적해야합니다 .

예를 들어 컬렉션에 "Jenn Smith"가 있고 "Jennifer Smith"에 대한 두 개의 새 항목과 동일한 식별자가있는 경우 동일한 사람이며 Mongo의 $inc을 사용하여 카운터이므로 문서는 결국 다음과 같이 보입니다 : 'names': { 'Jenn Smith': 1, 'Jennifer Smith': 2} - 그리고 나는 결국 가장 일반적인 것인 "Jennifer Smith"를 사용할 수 있습니다.

location은 예를 들어 {'street': '123 Maple Street Apt A', 'city': 'Austin', 'state': 'TX'}과 같은 사전이므로 Jenn Smith가 자신과 관련된 위치와 동일한 문제를 해결해야 할 때 제 문제가 발생합니다. 이제는 때로는 여러 다른 위치, 하나씩 사전을 얻습니다. 지금까지는 $push을 몽고로 배열했습니다. locations. 그러나 대다수의 경우에는 각 컬렉션 문서의 위치가 매우 다르며 약간의 유사 콘텐츠가 있습니다 (예 : {'street': '123 Maple Street Apartment A', 'city': 'Austin', 'state': 'TX'}).

나는 $incnames과 같은 방식으로 작동하지 않는다는 것을 알고 있습니다. 파이썬 사전은 해시 가능하지 않기 때문입니다. 내 locations 배열에서 가장 공통적 인 요소를 찾으려면 어떻게해야합니까?

답변

0

이후 dictionary 당신이 당신의 dictionaryfrozon sethash를 만들 수 있습니다 중첩되지 않는 것이 :

hash(frozenset(location.items()))