MST

星途 面试题库

面试题:MongoDB数据建模与查询优化之索引策略

在MongoDB中,假设有一个存储用户订单信息的集合orders,包含字段有user_id、order_date、order_amount、product_list等。现在需要频繁根据user_id和order_date查询订单。请描述如何设计索引以优化这类查询,并说明索引设计的理由。
48.8万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

索引设计

orders集合上创建一个复合索引,索引字段为user_idorder_date,如下:

db.orders.createIndex({user_id: 1, order_date: 1});

理由

  1. 多字段查询优化:因为查询条件是根据user_idorder_date,复合索引能够有效地加速这种多字段的查询。MongoDB在查询时可以使用这个复合索引快速定位到符合条件的文档,而不需要全表扫描。
  2. 顺序性:索引字段顺序user_id在前,order_date在后,这是因为查询条件通常会先基于user_id进行过滤,然后再在该用户的订单中根据order_date进一步筛选。如果user_id相同,order_date字段的索引也能继续发挥作用,加快查询速度。