MongoDB在数组中计数非常慢

时间:2016-07-01 08:27:42

标签: mongodb

我的数据如下:

{
   "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编入索引

0 个答案:

没有答案