2017-02-17 2 views
0

私はMongoDBコレクションを持っています。各ドキュメントは、人の人口統計情報(一意の識別子、名前、住所など)です。MongoDB配列のディクショナリをカウントするには?

Python/pymongoを使用してデータベースに新しいデータを解析するとき、既存の識別子に対応する新しいエントリが見つかるため、最後に最も一般的なものだけを利用するために新しいエントリの数を追跡する必要があります。

たとえば、コレクションに「Jenn Smith」が既にあり、「Jennifer Smith」と同じ識別子の新しいエントリが2つある場合、それは同じ人物です.Mongoの$incを使用して、最終的に文書は次のようになります。'names': { 'Jenn Smith': 1, 'Jennifer Smith': 2} - 最後に最も一般的な "Jennifer Smith"を使用できます。

location{'street': '123 Maple Street Apt A', 'city': 'Austin', 'state': 'TX'}のように辞書であるため、Jenn Smithが自分自身に関連付けられている場所とまったく同じ問題に対処しなければならないときに問題が発生します。今では時々私はいくつかの異なる場所を得ることが起こる、各1つの辞書は、これまでのところ私は$push Mongo locationsに。しかし、大部分の場合、各コレクション文書には優位な位置があり、他のものはわずかなバリエーションがあります(例:{'street': '123 Maple Street Apartment A', 'city': 'Austin', 'state': 'TX'})。

$incは、namesの場合と同じように動作しないことを理解しています。これは、Python辞書がハッシュ可能ではないためです。私のlocationsアレイで最も一般的な要素を見つける方法はありますか?

答えて

0

ので、ごdictionaryあなたdictionaryfrozon sethashを作成することができますネストされていないこと:

hash(frozenset(location.items())) 
関連する問題