我需要关于在mongo中创建和排序索引的建议。
我有一个包含5个属性的帖子集合:
Posts
- 状态
- 开始日期
- 结束日期
- lowerCaseTitle
- 排序顺序
几乎所有帖子都将具有相同的状态1,只有少数帖子将具有被拒绝的状态。所有我的查询都将根据状态、开始和结束日期进行过滤,并按sortOrder排序。我还将有一个查询对标题进行正则表达式搜索。
我应该在{状态:1,开始日期:1,结束日期:1,排序:1}上设置复合键吗?在复合索引中放置字段的顺序是否重要?我应该首先将状态放入复合索引中,因为它是最广泛的吗?与单个属性的单个索引相比,使用复合索引是否更好?Mongo是否仅在任何给定查询中使用单个索引?
如果我对lowerCaseTitle进行正则表达式查询,是否有任何有关索引的提示?
示例查询:
db.posts.find({status: {$gte:0}, start: {$lt: today}, end: {$gt: today}}).sort({sortOrder:1})
db.posts.find( {lowerCaseTitle: /japan/, status:{$gte:0}, start: {$lt: today}, end: {$gt: today}}).sort({sortOrder:1})