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?/ })