慢速 Mongodb 正则表达式处理 2 亿个文档

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

我有一个 MongoDB 集合,其中包含不同网站的大约 2 亿个条目。这些文件的结构如下:

{
  "_id": {
    "$oid": "6647314adcfdad8dd8b1c84f"
  },
  "url": "http://example.com/login.php",
  "name": "Jack"
}

我在 url 字段上有一个常规索引和一个文本索引。 当我尝试搜索特定域的子域时,查询几乎永远不会完成:

{
  "url": {
    $regex: "^http://([a-zA-Z0-9-]+\\.)*google\\.com"
  }
}

解释功能表明我的索引正在被使用。我还尝试简化正则表达式来搜索简单的 http 或 https 模式,但这也未能提高性能。

唯一快速的搜索是精确域搜索:

{
  "url": {
    $regex: "^https://example.com"
  }
}

我在 intel i5-12450H 和 32GB 内存上运行它。

我做错了什么?或者说 MongoDB 不是为这种任务而设计的?

database mongodb mongodb-query
1个回答
0
投票

已解决:只需为域创建一个单独的字段即可。我使用 python 的 tldextract 提取它。 这样就快多了。

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