Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB:进行一系列查询 情况_Node.js_Mongodb_For Loop_Search - Fatal编程技术网

Node.js MongoDB:进行一系列查询 情况

Node.js MongoDB:进行一系列查询 情况,node.js,mongodb,for-loop,search,Node.js,Mongodb,For Loop,Search,经过一些操作后,我得到了如下字符串:qwertyuiop。使用MongoDB我需要搜索该字符串的每个子字符串。所以我需要做很多查询:qwertyuiop,qwertyuio,qwertyui,qwertyuqw,q(每次查询后,我从右边减去1个字母,直到该字符串变成一个字母)。因此,我的node.js代码迭代一个子字符串数组,并在每次MongoDB查询时生成 问题 这段代码对于数据库来说很重,这就是性能低下的原因。我不太了解MongoDB和node.js。 如果您能帮助我解决这个问题,我将非常高

经过一些操作后,我得到了如下字符串:
qwertyuiop
。使用MongoDB我需要搜索该字符串的每个子字符串。所以我需要做很多查询:
qwertyuiop
qwertyuio
qwertyui
qwertyu
qw
q
(每次查询后,我从右边减去1个字母,直到该字符串变成一个字母)。因此,我的node.js代码迭代一个子字符串数组,并在每次MongoDB查询时生成

问题 这段代码对于数据库来说很重,这就是性能低下的原因。我不太了解MongoDB和node.js。 如果您能帮助我解决这个问题,我将非常高兴。

您可以使用在单个查询中搜索所有这些匹配项:

db.collection.find({ fieldName: { $in: ['qwertyuiop', 'qwertyuio', 'qwertyui', 'qwertyu', 'qwerty', 'qwert','qwer', 'qwe', 'qw', 'q'] } })
或者,您可以使用以下工具进行搜索:

如果你不熟悉正则表达式,这里有一个例子

尽管这只允许您对数据库进行一次查询,但这些查询本身可能会非常昂贵。为匹配的字段编制索引非常重要,这样才能获得最佳性能

如果使用正则表达式,则有。例如,请确保不使用不区分大小写的正则表达式,以便充分利用索引

db.collection.find({ fieldName: /^qw?e?r?t?y?u?i?o?p?/ })