MST

星途 面试题库

面试题:MongoDB中findOne方法结合索引的优化

在一个拥有大量文档的集合orders中,每个文档有字段order_id(唯一标识)、customer_id、order_date(日期类型)、total_amount(订单总金额)。若经常需要使用findOne方法根据customer_id和order_date查询订单信息,如何创建索引来优化findOne查询性能,并写出在这种索引条件下,查询customer_id为'C001'且order_date在'2023 - 01 - 01'之后的第一个订单文档的查询语句。
11.9万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 创建索引
    db.orders.createIndex({customer_id: 1, order_date: 1});
    
    解释:通过createIndex方法,以customer_idorder_date字段创建复合索引,1表示升序索引。这样的索引结构有助于findOne方法根据这两个字段快速定位文档。
  2. 查询语句
    db.orders.findOne({
        customer_id: 'C001',
        order_date: {$gt: new Date('2023-01-01')}
    });
    
    解释:findOne方法用于查询满足条件的第一个文档。customer_id字段值为'C001'order_date字段值大于'2023 - 01 - 01',这里使用$gt操作符表示大于。