在正在运行的节点JS中使用正则expression式的Mongo查询variables

我在这里有一个问题。 我想在我的Node JS文件中查询我的MongoDB,使用像LIKE这样的常规关系数据库。 问题是我想要的东西不是一个文字…这是一个variables! 到目前为止,我还没有find好的办法。 这是我拿到的“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中创build的…我已经运行了,而且这样做确实与包含“result”的“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'] } } ); 

所有其他的答案可能会失败,取决于你的inputvariables

您可以像其他人一样使用RegExp,但您必须转义特殊的正则expression式字符,否则可能会失败。

Lodash有一个function可以做到这一点(如果你不使用它,你应该会增加很多甚至在ES6 +规范中没有的糖)

https://lodash.com/docs#escapeRegExp

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