我收到以下错误。当我尝试通过 user_id 汇总或在 user_id
上分享时 failed: exception: aggregation result exceeds maximum document size
failed: exception: distinct too big, 16mb cap
我想知道如何在非常大的收藏品下完成我的任务?
{
user_id: "Jack",
SYMPTOM_1: "flu",
SYMPTOM_2: "cough",
SYMPTOM_3: "cancer",
datetime: "20140101",
}
此查询尝试将用户分组,并将医疗记录的所有症状附加到每个用户
db.medical_records.aggregate([
{
"$sort": { "datetime": 1 }
},
{
"$group": {
"_id": "$user_id",
"symptom1":{
"$push": {"symptom": "$SYMPTOM_1" ,"date": "$datetime"}
},
"symptom2":{
"$push": {"symptom": "$SYMPTOM_2" ,"date": "$datetime"}
},
"symptom3":{
"$push": {"symptom": "$SYMPTOM_3" ,"date": "$datetime"}
},
"first_date": { "$first": "$datetime" },
"user_id": { "$first": "$user_id" },
"count": { "$sum": 1 }
}
},
{
"$project": {
"user_id": "$user_id",
"date": "$datetime",
"symptom1": "$symptom1",
"symptom2": "$symptom2",
"symptom3": "$symptom3",
"count": "$count",
"_id": 1
}
}
],allowDiskUse=true)
{u'user_id': u'de96dsdase303c6c6439891c57901183c0e4c',
u'symptom1': [{u'symptom': u'1479 ', u'date': u'20040910'}],
u'symptom2': [{u'symptom': u' ', u'date': u'20040910'}],
u'symptom3': [{u'symptom': u' ', u'date': u'20040910'}],
u'count': 1,
u'first_date': u'20040910'}
答案 0 :(得分:-1)
看起来您正在尝试使用allowDiskUse选项,这可能会解决您的问题,但不幸的是您似乎有语法错误。
将选项传递给某个操作时,需要将这些选项作为{
和}
所包围的对象传递。
您在此处执行的操作是将true
分配给新的全局变量allowDiskUse
,并将该assign操作的结果传递给aggregate,这只是值true
。
尝试将],allowDiskUse=true)
替换为], { allowDiskUse:true } )
这允许您规避每个聚合阶段的16MB限制。但请记住,这仍然是一个非常缓慢的操作。