MST

星途 面试题库

面试题:MongoDB复合索引的创建与应用场景

请阐述在MongoDB中创建复合索引的语法,并举例说明至少两种适合使用复合索引的实际业务场景。
48.1万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

在MongoDB中创建复合索引的语法如下:

db.collection.createIndex({field1: <type1>, field2: <type2>, ...})

其中,field1field2等是要包含在复合索引中的字段,<type1><type2>等是字段对应的索引类型(如1表示升序,-1表示降序)。

适合使用复合索引的实际业务场景举例:

场景一:电商订单查询 假设电商系统中有订单集合orders,包含字段customer_id(客户ID)、order_date(订单日期)和order_amount(订单金额)。 常见查询可能是根据客户ID和订单日期范围来查找订单,例如:

db.orders.find({customer_id: "12345", order_date: {$gte: ISODate("2023-01-01"), $lte: ISODate("2023-12-31")}})

此时可以创建复合索引:

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

这样可以加速基于客户ID和订单日期范围的查询,因为索引结构会先按照客户ID排序,相同客户ID下再按订单日期排序,符合查询的筛选逻辑。

场景二:社交平台用户搜索 社交平台的用户集合users,有gender(性别)、age(年龄)和location(所在地)字段。 如果经常有需求按照性别、年龄范围和所在地来查找用户,比如:

db.users.find({gender: "female", age: {$gte: 20, $lte: 30}, location: "New York"})

则可以创建复合索引:

db.users.createIndex({gender: 1, age: 1, location: 1})

通过这个复合索引,查询时可以快速定位到符合条件的用户数据,提高查询效率。