MongoDB查询优化search文本

我有一个NodeJS开发的应用程序,它作为一个REST API使用,并从MongoDB中使用数据

在MongoDB中,我有一个名为“ftp”的集合,拥有超过1000万个具有以下结构的文档

{ "_id" : ObjectId("59e7c66911506bd1725cf145"), "ip" : "72.32.177.76", "timestamp" : "2017-10-16T02:30:26-04:00", "data" : { "banner" : "220-FileZilla Server version 0.9.41 beta\r\n" } } 

“data.banner”字段是一个hased索引

从NoodeJs我做一个聚合查询,使用正则expression式筛选一个文本string,组和计算结果。

 function getData(timeInit, table, textSearch, res) { MongoClient.connect(url, function (err, db) { if (err) throw err; db.collection(table).aggregate([ { $match: { 'data.banner': $regex:textSearch} }, { $group: { _id: '$data.banner', num: { $sum: 1 }, } }, { $sort: { num: -1 } },{ $limit:5 } ], { allowDiskUse: true } ).toArray(function (err, result) { if (err) throw err; var timeFinal = new Date(); var data = { result: result, timeLapse: (timeFinal - timeInit) / 1000, numResult: result.length }; res.send(data); db.close(); }); }); }; 

正则expression式的查询大约需要8秒钟的时间来返回结果,在我看来,这是一个过多的时间,因为正则expression式不是最优的。

我的问题是我应该如何让filter以最佳方式search包含文本的文档,从而缩短响应时间。

如果有人知道如何优化这种types的查询,我将非常感激。