2017-02-17 51 views
0

我有一个MongoDB集合,其中每个文档都是某人的人口统计信息(唯一标识符,名称,地址等)。如何计算MongoDB数组中的字典?

当我使用Python/pymongo解析新数据到我的数据库中时,我发现了与现有标识符相对应的新条目,并且我需要跟踪新条目的计数,以便仅使用最常见的条目。例如,如果我的收藏中已经有“Jenn Smith”,然后我为“Jennifer Smith”和相同的标识符获得两个新条目,则它是同一个人,我只是使用Mongo的$inc来增加一个计数器,所以文件最终看起来像:'names': { 'Jenn Smith': 1, 'Jennifer Smith': 2} - 我可以使用最常见的“詹妮弗史密斯”。

当我必须处理与Jenn Smith自己关联的位置完全相同的问题时,出现问题,因为location是一个字典,例如:{'street': '123 Maple Street Apt A', 'city': 'Austin', 'state': 'TX'}。现在有时我会得到几个不同的位置,每个位置都有一本字典,至此我将$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()))