Ответ 1
Попробуйте следующее:
db.testlogwiki.find({"line_text" : new RegExp(result) };
У меня проблема. Я хочу запросить мой 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", содержащим "результат" буквально.
Кажется, очень простой вопрос...
Попробуйте следующее:
db.testlogwiki.find({"line_text" : new RegExp(result) };
Оба будут работать
db.testlogwiki.find({"line_text" : new RegExp(result, 'i') }; // to make this case insensitive
или
db.testlogwiki.find( { line_text: { $regex: result[, $options: 'i'] } } );
Вы также можете использовать опцию $regex.
db.testlogwiki.find( { line_text: { $regex: result[, $options: 'i'] } } );
Все остальные ответы могут не работать в зависимости от вашей входной переменной
Вы можете использовать RegExp, как указывали другие, но вы должны избегать специальных символов регулярного выражения, иначе это может быть неудачно.
У Lodash есть функция, чтобы сделать это (если вы не используете его, вероятно, вы должны быть, он добавляет много сахара, что даже не в спецификации ES6 +)
https://lodash.com/docs#escapeRegExp
db.COLLECTION.find({FIELD_NAME: new RegExp(_.escapeRegExp(VAR), 'i') };