在 Node.js 中优化 MongoDB 查询速度

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

我的 Node.js 应用程序中有一个 MongoDB 查询,我想对其进行优化以获得更好的性能。查询如下所示:

var ReceiveEmailHistoryData1 = await ReceiveEmailHistory.find({
    IsDeleted: false,
    ClientID: ClientID,
    UserID: UserID,
    IsTrash: false,
    $or: [
        { Subject: new RegExp(Search, "i") },
        { FromEmail: new RegExp(Search, "i") },
        { Snippet: new RegExp(Search, "i") }
    ]
});

我尝试过的: 我已经为数据库中的搜索字段实施了索引策略,以加快查询速度。我还探索了使用 Redis 的缓存机制来减少数据库服务器的负载。此外,我还研究了为我的特定数据库系统 MongoDB 推荐的查询优化技术。我已经查看了有关提高我的技术堆栈中的搜索性能的相关文档和博客文章。

我的期望: 我希望通过创建适当的索引、利用缓存和优化查询,可以显着提高搜索速度。我的目标是减少查询响应时间并为搜索操作提供更高效的用户体验。

实际结果: 虽然我确实观察到实施这些策略后搜索速度有所提高,但性能提升并没有我希望的那么大。查询响应时间仍然没有达到期望的标准,我正在寻求进一步的指导和建议以实现更好的优化。

node.js mongodb express mongodb-query
1个回答
0
投票

根据您的查询,您似乎想在

Subject,FromEmail,Snippet
字段上实现全文搜索。由于此字符串匹配本身就是一项 CPU 密集型任务,并且您的方法具有附加条件,因此非常耗时。

我建议请使用带有自定义分析器的atlas-search,创建自定义n-gram索引,这将创建字符串的标记,然后使用聚合,您将在更短的时间内获得精确的结果,而且它也可以在大量数据中工作

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