这个问题也与我的上一个问题类似。基本上,我有一个像这样的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。 谢谢!