我正在尝试通过搜索字段来查询 mongodb 中 700 万个文档的集合。我正在使用正则表达式来执行部分搜索。给我回复需要很多时间。有什么办法可以提高性能吗?
我尝试创建文本索引,但 $text 支持部分搜索作为正则表达式
索引是加速 MongoDB 查询的主要工具。然而,当使用
$regex
匹配时,索引仅在某些特殊条件下使用。这意味着,如果您无法添加一些使用索引的附加过滤条件,查询将最终陷入集合扫描。
因此,
$text
索引是过滤文本内容的更好工具。如果这会产生太多误报结果,您可以同时使用 $text
和 $regex
条件来微调结果,例如:
db.movies.find({
$and: [
{
$text: {
$search: "at Tiffany's",
},
},
{
title: { $regex: /at Tiffany's/ },
},
],
});
这篇博客文章更详细地描述了该过程。