gpt4 book ai didi

regex - Mongo 正则表达式搜索的索引范围

转载 作者:IT老高 更新时间:2023-10-28 13:08:45 25 4
gpt4 key购买 nike

我正在使用 MongoDB,并且我有一组具有以下结构的文档:

{
fName:"Foo",
lName:"Barius",
email:"fbarius@example.com",
search:"foo barius"
}

我正在构建一个函数,它将在 search 字段上执行正则表达式搜索。为了优化性能,我在搜索字段中索引了这个集合。然而,事情还是有点慢。所以我在一个示例查询上运行了 explain():

db.Collection.find({search:/bar/}).explain();

查看获胜计划,我看到使用了以下索引边界:

"search": [
"[\"\", {})",
"[/.*bar.*/, /.*bar.*/]"
]

第二组是有意义的 - 它从包含 bar 的任何内容到包含 bar 的任何内容。然而,第一组让我感到困惑。它似乎在 "" 包含到 {} 排除的范围内寻找。我担心这组额外的界限会减慢我的查询速度。有必要保留吗?如果不是,我该如何防止它被收录?

最佳答案

我认为这正是 mongodb 使用正则表达式的方式(参见 https://scalegrid.io/blog/mongodb-regular-expressions-indexes-performance/ )。请注意 nscanned/totalKeysExamined 值,如果它太大,则索引对您的查询无用。

另请参阅: MongoDB, performance of query by regular expression on indexed fields

关于regex - Mongo 正则表达式搜索的索引范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com