首页 > 解决方案 > 添加更多属性时未使用 Mongo 索引

问题描述

我正在对我的数据库运行两个不同的查询,但是,一个运行得非常快,调用/使用所有相关索引,而另一个只是添加了一个要搜索的字段,速度非常慢。如果您知道如何解决它,请告诉我。

这个运行速度超级快:

db.orders.find(
{
        '$or': 
            [ 
                { order_id: { '$regex': '^.*8664149', '$options': 'i' } }, 
                { ref_number: { '$regex': '^.*8664149', '$options': 'i' } }, 
                { 'ls.ref_order_number': { '$regex': '^.*8664149', '$options': 'i' } }, 
                { tracking_number: { '$regex': '^.*8664149', '$options': 'i' }}, 
                { 'customer.first_name': { '$regex': '^8664149', '$options': 'i' } }, 
                { 'customer.last_name': { '$regex': '^8664149', '$options': 'i' }  } 
                 ]
        })

但是,我也在其中搜索零售商名称的这个运行速度非常慢,并且它也没有调用我在零售商字段上创建的索引:

db.orders.find(
{
        retailer: ObjectId("57a8d0b9eb656789de793"),
        '$or': 
            [ 
                { order_id: { '$regex': '^.*8664149', '$options': 'i' } }, 
                { ref_number: { '$regex': '^.*8664149', '$options': 'i' } }, 
                { 'ls.ref_order_number': { '$regex': '^.*8664149', '$options': 'i' } }, 
                { tracking_number: { '$regex': '^.*8664149', '$options': 'i' }}, 
                { 'customer.first_name': { '$regex': '^8664149', '$options': 'i' } }, 
                { 'customer.last_name': { '$regex': '^8664149', '$options': 'i' }  } 
                 ]
        })

谢谢您的帮助

标签: mongodbindexing

解决方案


推荐阅读