处理mongodb字典嵌套表单

时间:2018-06-16 13:09:55

标签: mongodb

这个问题也与我的上一个问题类似。基本上,我有一个像这样的mongodb集合。这里的嵌套部分是字典而不是数组的形式。所以我无法使用$ unwind来处理'cms_prescription_counts'部分,这使问题变得更加复杂。

{u'_id': ObjectId('5b243611dba907285af051ee'),
u'cms_prescription_counts': {u'ABILIFY': 11,
                          u'ALLOPURINOL': 86,
                          u'ALPRAZOLAM': 45,
                          u'AMLODIPINE BESYLATE': 175,
                          u'AMLODIPINE BESYLATE-BENAZEPRIL': 12,
                          u'ATENOLOL': 62,
                          u'ATENOLOL-CHLORTHALIDONE': 53,
                          u'ATORVASTATIN CALCIUM': 19,
                          u'AZITHROMYCIN': 18}},
 {u'_id': ObjectId('5b243611dba90728sad51ee'),
  u'cms_prescription_counts': {u'ABILIFY': 11,
                          u'ALLOPURINOL': 70,
                          u'ALPRAZOLAM': 20,
                          u'AMLODIPINE BESYLATE': 15,
                          u'AMLODIPINE BESYLATE-BENAZEPRIL': 24,
                          u'ATENOLOL': 62,
                          u'ATENOLOL-CHLORTHALIDONE': 53,
                          u'ATORVASTATIN CALCIUM': 19,
                          u'AZITHROMYCIN': 18}
...
...

现在我想计算整个集合中每种药物的发生情况,比如'ABILIFY'上诉的次数,并找到发生率最高的药物。

我试过$ group

pipeline = [
    {"$group":{"_id": "$cms_prescription_counts", "count": {"$sum": 1}}},

]
db.pre_collection.aggregate(pipeline)

但它出现了错误

Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in.

任何人都可以提供帮助?事实上,我认为如果我的文件采用以下格式:

{u'_id': ObjectId('5b243611dba907285af051ee'),
u'cms_prescription_counts': [{medi:u'ABILIFY', number: 11},
                          {medi:u'ALLOPURINOL',number: 86},
                           ...]}

使用$ unwind会更方便。所以现在我不知道如何处理它。 顺便说一句,我用pymongo。 谢谢!

0 个答案:

没有答案