我的数据如下:
{
"timestamp":1467349392 ,
"alert_tag":[
"alert_source: WS2",
"alert_severity:warning",
"alert
_object:Sensor-840",
"alert_type_id:2",
"alert_status:resovled"
],
"alert_info":{
"t":1
},
"server_created_timestamp":NumberLong("1467349309392"),
"alert_
id":"20"
}
我在该系列中有大约200万条记录。我正在尝试计算与查询匹配的唯一alert_status,alert_object,alert_source的数量。以下是我的聚合管道(匹配,展开,组,排序,项目,组),大约需要40秒才能完成:
{
"$match":{
"alert_tag":{
"$in":[
"alert_status:pending"
]
}
}
},
{
"$unwind":"$alert_tag"
},
{
"$group":{
"_id":"$alert_tag",
"count":{
"$sum":1
}
}
},
{
"$sort":{
"_id":1
}
},
{
"$project":{
"tmp":{
"alert":"$_id",
"count":"$count"
}
}
},
{
"$group":{
"_id":null,
"total":{
"$sum":1
},
"data":{
"$addToSet":"$tmp"
}
}
}
如何改善表现?已将alert_tag
编入索引