索引mongo中的两个字段:时间戳和文本

时间:2013-07-30 13:48:05

标签: mongodb indexing

我在收集上发现了很多这样的请求:

{'$and': [{'time': {'$lt': 1375214400}},
          {'time': {'$gte': 1375128000}},
          {'$or': [{'uuid': 'test'},{'uuid': 'test2'}]}
         ]}

我必须创建哪个索引:复合或两个单独或两者兼而有?

uuid - 数据收集器的名称。 时间 - 时间戳

我想检索由指定时间间隔内的一个或几个收集者收集的数据。

1 个答案:

答案 0 :(得分:2)

如果不使用$and并使用$in代替$or,您的查询会更好地编写:

{
  'time': {'$lt': 1375214400, '$gte': 1375128000},
  'uuid': {'$in': ['test', 'test2']}
}

然后很明显,您需要一个涵盖timeuuid的复合索引,以获得最佳查询性能。但重要的是始终使用explain()确认您的索引正在按预期使用。