所以我正在使用 MongoDB 的聚合框架,并对当前包含大约 700K 文档的集合执行查询。这是查询:
db.logs.aggregate(
{'$match' : { 'tag' : 'TAG-XYZ' }},
{'$project' : {
'tag' : '$common_tag.bId'
}},
{'$unwind' : '$tag'},
{'$group' : {
'_id' : '$tag',
'total' : {'$sum' : 1}
}},
{'$sort':{'_id':1}},
{'$skip':0},
{'$limit':20}
)
logs
包含大约 20 个字段。tag
是一个平均包含 10 个标签的数组,它common_tag
只是一个嵌入文档,它将一些分类标签与标签数组分开,以消除使用. 我使用分页,所以值是可变的。请注意,使用了查询,因此没有一组固定结果。$unwind
tag
skip
问题是查询至少需要 30 秒才能执行。我担心数据集不断增长,它可能不支持我的实时(或近实时)查询需求。有没有更好的方法来改进查询?