У меня есть схема с именем Skills
, в которой есть одно строковое поле с именем name
.Я хочу выполнить поиск по полю на основе заданной строки.Для нормальных строк, таких как java
, работает нормально.Но для C++
исключение части ++ как +
является специальным символом в регулярном выражении.Поэтому я заменил +
на \\+
, который прекрасно работает в mongodb.Для этого мой запрос в командной строке mongodb дает требуемый результат:
db.skills.find({"name": {'$regex': '^c\\+\\+', '$options': 'i'}})
Ниже приведен мой код с mongoose:
word = '^' + req.query.word;
word = word.replace(/\+/g, '\\+')
word = word.replace(/\./g, '\\+')
Skill.find({"name": {'$regex': word, '$options': 'i'}}).limit(10).exec(function (err, results) {
res.json({'results': results})
})
Здесь я добавил два оператора замены, чтобы заменить +
на \\+
и .
на \\.
Но приведенный выше код не работает.Это дает мне нулевой результат.Пожалуйста, помогите мне, если я где-то не так.
Спасибо,