gpt4 book ai didi

Node.js 查询 MongoDB 以返回以数组中的任何值开头的所有匹配项

转载 作者:可可西里 更新时间:2023-11-01 10:01:48 26 4
gpt4 key购买 nike

我正在尝试通过 Node.js 应用程序查询 MongoDB,以返回以以下数组中的任何条目开头的所有匹配项:['p','q','r','s',' t']

我知道如何为单个值做一个“开始于”:

var value = 't';
genericCollection.find({ 'key' : new RegExp('^' + value, 'i')}).toArray(function (err, items) {
res.send(items);
});

返回:

[
{
"_id": "59788e1a1b4a3901c7fd5501",
"key": "t-key",
"value": "t-value",
"lastModified": "2018-11-27T12:18:30.029Z"
}
]

而且我知道如何进行“匹配任何这些值”查询:

var values = ['p-key', 't-key'];
genericCollection.find({ 'key' : { $in : values}}).toArray(function (err, items) {
res.send(items);
});

返回:

[
{
"_id": "59788e1a1b4a3901c7fd5501",
"key": "t-key",
"value": "t-value",
"lastModified": "2018-11-27T12:18:30.029Z"
},
{
"_id": "5978ba139553e32697564d7e",
"key": "p-key",
"value": "p-value",
"lastModified": "2018-11-27T12:18:55.966Z"
}
]

但我如何将两者结合起来,以便从数据库中获取以这些数组值中的任何开头的所有结果?

最佳答案

您可以从多字符字符串构建一个基于交替的模式,同时牢记必要的分组结构(以便 ^ 可以应用于所有替代方案):

new RegExp('^(?:' + values.join('|') + ')', 'i')

请注意,如果值包含特殊的正则表达式元字符,您需要正确转义它们:

new RegExp('^(?:' + values.map(function(x) {return x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');}).join('|') + ')', 'i')

regex看起来像

^(?:t1|p2|mN)

详情

  • ^ - 字符串的开始
  • (?:t1|p2|mN) - 匹配任何替代项的非捕获组:t1p2mN.

关于Node.js 查询 MongoDB 以返回以数组中的任何值开头的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53499779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com