$regex 正在降低 mongodb 的性能

问题描述 投票:0回答:1

我正在尝试通过搜索字段来查询 mongodb 中 700 万个文档的集合。我正在使用正则表达式来执行部分搜索。给我回复需要很多时间。有什么办法可以提高性能吗?

我尝试创建文本索引,但 $text 支持部分搜索作为正则表达式

regex mongodb mongoose
1个回答
0
投票

索引是加速 MongoDB 查询的主要工具。然而,当使用

$regex
匹配时,索引仅在某些特殊条件下使用。这意味着,如果您无法添加一些使用索引的附加过滤条件,查询将最终陷入集合扫描。

因此,

$text
索引是过滤文本内容的更好工具。如果这会产生太多误报结果,您可以同时使用
$text
$regex
条件来微调结果,例如:

db.movies.find({
  $and: [
    {
      $text: {
        $search: "at Tiffany's",
      },
    },
    {
      title: { $regex: /at Tiffany's/ },
    },
  ],
});

这篇博客文章更详细地描述了该过程。

© www.soinside.com 2019 - 2024. All rights reserved.