MST

星途 面试题库

面试题:MongoDB复杂OR条件与索引优化的结合应用

在MongoDB的集合`products`中,文档包含`category`(类别)、`price`(价格)、`rating`(评分)字段。现在要查询`category`为'electronics'且`price`大于500,或者`rating`大于4.5的产品。并且要求对该查询进行索引优化以提高查询性能,描述如何创建索引以及写出完整查询语句。
36.9万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

创建索引

为了优化查询性能,可以在categorypricerating字段上创建复合索引。假设使用的是MongoDB的mongo shell,创建索引的语句如下:

db.products.createIndex({category: 1, price: 1, rating: 1});

上述语句中,1表示升序索引,如果想使用降序索引,可以使用-1。这个复合索引可以覆盖categorypricerating相关的查询条件,有助于提高查询性能。

查询语句

完整的查询语句如下:

db.products.find({
    $or: [
        {category: 'electronics', price: {$gt: 500}},
        {rating: {$gt: 4.5}}
    ]
});

该查询语句使用$or操作符,满足category为'electronics'且price大于500,或者rating大于4.5的条件。通过前面创建的复合索引,查询性能会得到提升。