mongoose加速在多个领域的search

我正在searchmongoose的文件,我必须search超过250,000个文件。 在这个function中,我必须在多个字段中添加search索引。 在文档中,一些字段是stringtypes,一些是多级对象。 我已经索引了所有可能的领域。

在当地我有10万份文件,当我search他们大概需要300-400毫秒。 但是,当我在服务器上search它们需要大约10-15秒的响应。

search查询是基于条件的,但我共享一个小的代码片段。

$and( { $or:[ {'field1': {$regex: re }}, {'field2': {$regex: re }}, {'level1.level2.value': {$regex: re }} ] }, { $and:[ { lowAge: {$lte: parseInt(age)} }, { highAge: {$gte: parseInt(age)} }, { $or:[ { gender:gender }, { gender:"N/A" } ] } ] } ) 

有人可以告诉我,我怎么能加快服务器上的进程。

       

网上收集的解决方案 "mongoose加速在多个领域的search"

要进一步加速,可以使用文本索引。

但文本索引带有以下存储要求和性能成本

  • 文本索引可能很大。 它们包含每个插入的每个文档的每个索引字段中每个唯一后置词的一个索引条目。
  • 构build文本索引与构build大型多键索引非常相似,并且需要花费比构build相同数据上的简单有序(标量)索引更长的时间。 在现有集合上构build大型文本索引时,确保对打开的文件描述符具有足够高的限制。 请参阅推荐的设置。
  • 文本索引将影响插入的吞吐量,因为MongoDB必须为每个新源文档的每个索引字段中的每个唯一后置词干单词添加一个索引条目。
  • 此外,文本索引不会存储短语或关于单词在文档中的邻近度的信息。 因此,当整个集合放入RAM中时,短语查询将运行得更加有效。

请参阅下面的参考

https://docs.mongodb.com/manual/core/index-text/

https://www.tutorialspoint.com/mongodb/mongodb_text_search.htm

希望能帮助到你!