#регулярные_выражения #nodejs #mongodb
Добрый день! В документе есть поле size (строка) вида 134-140, 140-146 и тп. Делаю запрос var s = "134"; var reg = new RegExp (`[${s}]`, "i"); collection.find({size:{$regex:reg}}).toArray(function(err, result){ console.log(result); }); По идее, должно вернуть все документы, где в поле size встречается цифры 134 (точнее строка). Но возвращает абсолютно все документы. Что я делаю не так? П.С. после многочисленных тестов я определил, что возвращаются не все документы, а только те, где встречается хотя бы один символ из регулярного выражения. В данном случае 134. Так, будто квадратных скобок нет. Версия MongoDB-сервера 3.0, модуль версии 3.0
Ответы
Ответ 1
var reg = /134/; collection.find({ size: { $regex: reg, $options: 'i' } }) UPD: var s = "134"; var reg = ".*" + s ".*"; collection.find({ size: { $regex: reg, $options: 'i' } })Ответ 2
Так как не ответили выше, в чём ошибка, дополню. У вас в регулярном выражении строка вида [123], то есть ищется любой из указаных в скобках символов. Вы это сами заметили: после многочисленных тестов я определил, что возвращаются не все документы, а только те, где встречается хотя бы один символ из регулярного выражения. В данном случае 134 А что вы ожидали от квадратных скобок? Так, будто квадратных скобок нет. Почитать об этом можно, например, вот тут или тут.
Комментариев нет:
Отправить комментарий