Я хочу создать расширенный поиск в проекте, который находится в узле JS с Mongo DB. Я создал поле в БД, которое является ключом поиска. пользователь может ввести любое слово в текстовое поле, и я хочу совместить это слово в строке и получить результат. ниже моей структуры и кода db. моя работа с кодом работает только с первым словом строки, а не с поиском во всей строке.Поиск любого слова в строке mongodb с узлом 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 or TEST
это даст мне только один результат, что идентификатор 001 и остальную часть результата не совпадает со всей строки.
Я хочу, как если бы я искал summer
или Summer
, что он даст мне 456 and 1212
_Id данные.
это означает, что теперь мой запрос как ниже –
Collection.find ({searchkey : {$ regex: new RegExp ('. *' + search.toLowerCase() + '. *', 'i')}, searchkey: {$ regex: новый RegExp ('. *' + search.toUpperCase() + '. *', 'i')}, is_active: true}, function (error, fetchSearch) { console.log (fetchSearch); }); –
Спасибо, сэр (лук) –