如何计算MongoDB数组中的字典?

时间:2017-02-17 22:22:30

标签: python mongodb count pymongo

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

当我使用Python / pymongo将新数据解析到我的数据库中时,我发现与现有标识符相对应的新条目,我需要跟踪新条目的计数,以便最终只使用最常见的条目。

例如,如果我的收藏中已经有“Jenn Smith”,然后我为“Jennifer Smith”获得了两个新条目和相同的标识符,那么它就是同一个人,我只使用Mongo的$inc增加一个计数器,所以文件最终看起来像:'names': { 'Jenn Smith': 1, 'Jennifer Smith': 2} - 我可以使用“Jennifer Smith”,这是最常见的。

当我必须处理与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数组中最常见的元素?

1 个答案:

答案 0 :(得分:0)

由于您的dictionary未嵌套,您可以创建frozon setdictionary的{​​{1}}:

hash