Mongodb查询对索引字段的部分字段搜索来说太慢了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb查询对索引字段的部分字段搜索来说太慢了相关的知识,希望对你有一定的参考价值。
我有跟随mongodb文件的800万份文件。
Customer
{
"lastName" : "LAST",
"firstName" : "FIRST"
}
我有以下索引
db.customer.createIndex( {lastName: 1, firstName: 1},{collation: { locale: "en_US", strength: 1}})
如果我基于lastName和firstName进行搜索,那么它的快速结果将在10毫秒内完成。
db.customer.find({lastName:"LAST" ,firstName:"FIRST"}).collation({ locale: 'en_US', strength: 1 })
我试图找到所有文件“AS”作为姓氏中的字符。但它需要超过100秒才能返回响应。我尝试了以下选项,但都需要超过100秒。 mongoDB真的喜欢sql类似操作('%AS%')
1)
db.customer.find({lastName:{"$regex": "AS"} ,firstName:"FIRST"}).collation({ locale: 'en_US', strength: 1 })
2)
db.customer.find({lastName:{"$regex": "/AS/"} ,firstName:"FIRST"}).collation({ locale: 'en_US', strength: 1 })
3)
db.customer.find({lastName:{"$regex": "^/AS/"} ,firstName:"FIRST"}).collation({ locale: 'en_US', strength: 1 })
答案
尝试在正则表达式上使用前缀以允许MongoDB使用范围
db.customer.find({lastName:{"$regex": "/^AS/"} ,firstName:"FIRST"}).collation({ locale: 'en_US', strength: 1 })
以上是关于Mongodb查询对索引字段的部分字段搜索来说太慢了的主要内容,如果未能解决你的问题,请参考以下文章
我可以对索引子文档字段执行 MongoDB“开始于”查询吗?