Mongodb查询速度太慢,部分字段搜索索引字段

我有以下mongodb文件与800万文件。Mongodb查询速度太慢,部分字段搜索索引字段

Customer 

{

"lastName" : "LAST",

"firstName" : "FIRST"

}

如果我在10毫秒的基础上的lastName和名字,那么它的速度快,得到的结果与搜索我有以下指标

db.customer.createIndex({lastName: 1, firstName: 1},{collation: { locale: "en_US", strength: 1}}) 

db.customer.find({lastName:"LAST" ,firstName:"FIRST"}).collation({ locale: 'en_US', strength: 1 }) 

我正在尝试查找所有以“姓氏”作为姓氏中的字符的文档。但它需要超过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 })

正则表达式是一个“前缀表示”如果以尖号开始(^)或左锚(\ A),后跟一串简单的符号。例如,正则表达式/^abc。 /将通过仅匹配以abc开头的索引值进行优化。 另外,虽然/^a /,/^a。 /和/^a。 $ /匹配等效字符串,它们具有不同的性能特征。如果存在适当的索引,所有这些表达式都使用索引;不过,/^a。 /和/^a.*$/较慢。/^ a /可以在匹配前缀后停止扫描。

regex

以上是 Mongodb查询速度太慢,部分字段搜索索引字段 的全部内容, 来源链接: utcz.com/qa/260586.html

回到顶部