MST

星途 面试题库

面试题:MongoDB精确指定返回键时的索引利用及性能优化

在MongoDB的一个集合 'orders' 中,文档有 'order_id'、'customer_id'、'product'、'quantity'、'total_amount' 等字段。若要查询 'customer_id' 为 '12345' 的订单,并只返回 'order_id' 和 'total_amount' 字段,同时确保查询性能最优,从索引设计角度应该怎么做?请详细说明索引创建步骤及查询语句。
34.8万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

索引设计

为了确保查询性能最优,应该在 customer_id 字段上创建索引。因为查询条件是基于 customer_id 进行筛选,创建该字段的索引可以大大提高查询效率。

索引创建步骤

在MongoDB的 mongo shell中,可以使用以下命令为 orders 集合的 customer_id 字段创建索引:

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

上述命令中的 1 表示升序索引,如果想创建降序索引,可以使用 -1

查询语句

在确保索引创建完成后,可以使用以下查询语句查询 customer_id12345 的订单,并只返回 order_idtotal_amount 字段:

db.orders.find(
    { customer_id: "12345" },
    { order_id: 1, total_amount: 1, _id: 0 }
)

这里的第二个参数用于指定返回的字段,1 表示包含该字段,0 表示不包含。由于 _id 字段默认会返回,所以明确指定 _id: 0 来不返回该字段。