0

现有一个集合数据量大概1千5百多万条,每天还会不断增加。
数据结构大概这样`{number: ‘1A1001’, visDate: ‘时间’}`,这里面number字段规格为 /^1[A-Z]\d{4}$/,visDate 为时间字段。
我想查询某个时间段中 包含A的number字段的并且正对number字段分组获取每种number的总条数。
现在使用aggregate聚合查询,语句如下:
`db.getCollection(‘xxx’).aggregate([
{$match: {number: /^1A/, visDate: {$gte: new Date(‘2017-11-11’), $lt: new Date(‘2018-01-01’)}}},
{$group: {_id: ‘$number’, count: {$sum: 1}}
])`
针对这个集合的number字段有建立索引,但是查阅资料说在经行group聚合操作的时候是不会使用索引的,所以
每次查询结果最低都是5s以上,有没有优化的地方,望大神解答