gpt4 book ai didi

javascript - 使用node js搜索字符串mongodb中的任何单词

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:57 25 4
gpt4 key购买 nike

我想在带有 Mongo DB 的 Node JS 项目中创建高级搜索。我在数据库中创建了一个作为搜索键的字段。用户可以在文本框中键入任何单词,我想在字符串中匹配该单词并获取结果。下面是我的数据库结构和代码。我的代码仅匹配字符串的第一个单词,而不是在所有字符串中搜索。

DB : 
{
"_id": ObjectId("001"),
"searchkey": "Test Product Test Product T-shirt Half sleeves Adidas"
}
{
"_id": ObjectId("123"),
"searchkey": "boy test Product Test Product T-shirt Half sleeves Nike"
}
{
"_id": ObjectId("456"),
"searchkey": "girl test Product Summer Product T-shirt full sleeves Adidas"
}
{
"_id": ObjectId("789"),
"searchkey": "any product any Product any Product T-shirt full sleeves Adidas"
}
{
"_id": ObjectId("1010"),
"searchkey": "woodland Product woodland Product T-shirt Half sleeves woodland"
}
{
"_id": ObjectId("1212"),
"searchkey": "Summer Product Test Product T-shirt Half sleeves Adidas"
}

My Query :

Collection.find({searchkey : {$regex: new RegExp('^' + search.toLowerCase(), 'i')},searchkey : {$regex: new RegExp('^' + search.toUpperCase(), 'i')},is_active:true},function(error,fetchSearch){
console.log(fetchSearch);
});

如果我搜索 test 或 TEST 它只会给我一个 id 为 001 的结果,而其余结果与所有字符串都不匹配。

我希望如果我搜索 summerSummer 它会给我 456 和 1212 _Id 数据。

最佳答案

您仅检查字符串是否以用户的搜索字符串开头。

^ = 表示字符串开头,因此 '^' + search.toLowerCase() 表示搜索以 search.toLowerCase() 开头的字符串,仅此而已。如果它不以搜索字符串开头 - 它不会匹配。这就是为什么对于 test 来说,只有 id 001 获得匹配。

将搜索模式更改为:'.*' + search.toLowerCase() + '.*' 以在字符串内的任意位置查找搜索字符串。

Here is the new regex ,您可以看到它与 456 和 1212 都匹配 'Summer'

关于javascript - 使用node js搜索字符串mongodb中的任何单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40716518/

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