我在收集上发现了很多这样的请求:
{'$and': [{'time': {'$lt': 1375214400}},
{'time': {'$gte': 1375128000}},
{'$or': [{'uuid': 'test'},{'uuid': 'test2'}]}
]}
我必须创建哪个索引:复合或两个单独或两者兼而有?
uuid - 数据收集器的名称。 时间 - 时间戳
我想检索由指定时间间隔内的一个或几个收集者收集的数据。
答案 0 :(得分:2)
如果不使用$and
并使用$in
代替$or
,您的查询会更好地编写:
{
'time': {'$lt': 1375214400, '$gte': 1375128000},
'uuid': {'$in': ['test', 'test2']}
}
然后很明显,您需要一个涵盖time
和uuid
的复合索引,以获得最佳查询性能。但重要的是始终使用explain()
确认您的索引正在按预期使用。