面试题答案
一键面试索引设计
在orders
集合上创建一个复合索引,索引字段为user_id
和order_date
,如下:
db.orders.createIndex({user_id: 1, order_date: 1});
理由
- 多字段查询优化:因为查询条件是根据
user_id
和order_date
,复合索引能够有效地加速这种多字段的查询。MongoDB在查询时可以使用这个复合索引快速定位到符合条件的文档,而不需要全表扫描。 - 顺序性:索引字段顺序
user_id
在前,order_date
在后,这是因为查询条件通常会先基于user_id
进行过滤,然后再在该用户的订单中根据order_date
进一步筛选。如果user_id
相同,order_date
字段的索引也能继续发挥作用,加快查询速度。