Mongo Query с регулярным выражением в Node JS, работающем на переменном

У меня проблема. Я хочу запросить мой MongoDB в моем Node JS файле, используя что-то вроде LIKE для обычного реляционного db. Проблема в том, что я хочу, чтобы LIKE не был буквальным... это переменная! На данный момент я не нашел хорошего способа сделать это. Здесь был выстрел "durrr first try", который я взял у него:

var result = postData.replace(/\+/g,' ').substring(5);
db.testlogwiki.find({"line_text" : /result/ };
//predictably only matches to the literal "result" as opposed to my variable

testlogwiki создается в Mongo... Я запускаю его, и это делает mach для записей db с "line_text", содержащим "результат" буквально.

Кажется, очень простой вопрос...

Ответ 1

Попробуйте следующее:

db.testlogwiki.find({"line_text" : new RegExp(result) };

Ответ 2

Оба будут работать

db.testlogwiki.find({"line_text" : new RegExp(result, 'i') }; // to make this case insensitive 

или

db.testlogwiki.find( { line_text: { $regex: result[, $options: 'i'] } } );

Ответ 3

Вы также можете использовать опцию $regex.

db.testlogwiki.find( { line_text: { $regex: result[, $options: 'i'] } } );

Ответ 4

Все остальные ответы могут не работать в зависимости от вашей входной переменной

Вы можете использовать RegExp, как указывали другие, но вы должны избегать специальных символов регулярного выражения, иначе это может быть неудачно.

У Lodash есть функция, чтобы сделать это (если вы не используете его, вероятно, вы должны быть, он добавляет много сахара, что даже не в спецификации ES6 +)

https://lodash.com/docs#escapeRegExp

db.COLLECTION.find({FIELD_NAME: new RegExp(_.escapeRegExp(VAR), 'i') };