vav*_*uta 15 regex indexing mongodb
我正在使用MongoDB,我有一组具有以下结构的文档:
{
fName:"Foo",
lName:"Barius",
email:"fbarius@example.com",
search:"foo barius"
}
Run Code Online (Sandbox Code Playgroud)
我正在构建一个将在该search
字段上执行正则表达式搜索的函数.为了优化性能,我已在搜索字段中为此集合编制索引.然而,事情仍然有点慢.所以我运行了explain()
一个示例查询:
db.Collection.find({search:/bar/}).explain();
Run Code Online (Sandbox Code Playgroud)
在获胜计划下,我看到使用了以下索引边界:
"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]
Run Code Online (Sandbox Code Playgroud)
第二组是有道理的 - 它从包含条形的任何东西看到包含条形的任何东西.然而,第一集让我感到困惑.它似乎正在寻找""
包容性与{}
排他性的界限.我担心这个额外的界限会减慢我的查询速度.有必要保留吗?如果不是,我怎么能阻止它被包括在内?
小智 5
我认为这只是mongodb与正则表达式一起工作的方式(参见https://scalegrid.io/blog/mongodb-regular-expressions-indexes-performance/).只要注意nscanned/totalKeysExamined值,如果它太大,那么索引对你的查询没用.
另请参阅: MongoDB,通过索引字段上的正则表达式执行查询