Rub*_*yes 6 optimization performance mongodb mongodb-query
寻求有关 MondoDB 的帮助。
我有一个包含 730 万个文档的 MongoDB 集合,运行在具有 24 个内核和 64GB RAM 的服务器上。我已经为单个字段创建了文本索引。
当我使用下面的代码(在 MongoShell 中)执行文本搜索时:
db.getCollection('mycoll').find({$text: {$search: 'my search query'}}).limit(10);
Run Code Online (Sandbox Code Playgroud)
我几乎立即得到结果。唯一的问题是这些结果基本上是无用的,因为它们不是按分数排序的(我无法理解为什么这不是默认行为,但这是一个不同的主题)。
我修改命令以包含按分数排序,如下所示:
db.getCollection('mycollection').find({$text: {$search: 'my search query'}, {score: {$meta: 'textScore'}}}).sort({score: {$meta: 'textScore'}}).limit(10);
Run Code Online (Sandbox Code Playgroud)
该命令有效,但现在需要大约 10 秒。
对于单个或偶尔的查询,这不是什么大问题,但是当我需要批量执行 1,000 - 10,000 个此类查询时,我们现在讨论的是几个小时的等待时间。
我看到了一些关于添加“项目”和“聚合”的建议,但我没有看到任何改进。也许我做得不对,所以我不想在这里添加额外的代码。
任何可以提供帮助的 MongoDB 专家将不胜感激!
| 归档时间: |
|
| 查看次数: |
1048 次 |
| 最近记录: |