mongodb - 添加更多属性时未使用 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' } }
]
})
谢谢您的帮助
解决方案
推荐阅读
- node.js - Knex 与 Heroku Postgres 连接出现错误?
- algorithm - 寻找按字母匹配单词的数据结构
- php - 未验证 reCAPTCHA 时提交注册表单
- java - 尝试使用 Tab 在 JTextFields 之间垂直跳转(使用自定义 FocusTraversalPolicy)
- javascript - Chrome 扩展开发:不断出现 Unchecked runtime.lastError: 无法建立连接。接收端不存在
- java - 如何从java中的任何目录和对话框中读取文本文件?
- azure-active-directory - 使用 Microsoft Graph 删除对企业应用的用户或组分配
- java - 无法有意启动服务。连接相机服务失败
- flutter - 如何在工厂构造函数中为变量赋值而不使其成为静态变量?
- python - 即使在安装 pyiwin32 之后,Python 错误键 'sapi5'