Mongo查询与节点JS中的正则表达式操作变量

时间:2012-05-23 21:22:07

标签: node.js mongodb

我这里有问题。我想在我的Node JS文件中使用像LIKE这样的常规关系数据库来查询我的MongoDB。问题是我想要的东西不是文字......它是一个变量!到目前为止,我还没有发现这样做的好方法。这是我拍摄的“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中制作的......我已经运行了,这对于包含“结果”的“line_text”的数据库输入来说是真的。

这似乎是一个非常简单的问题......

4 个答案:

答案 0 :(得分:35)

试试这个:

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

答案 1 :(得分:4)

两者都可以使用

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

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

答案 2 :(得分:2)

您也可以使用$ regex选项。

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

答案 3 :(得分:1)

所有其他答案可能会失败,具体取决于您的输入变量

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

Lodash有这样做的功能(如果你没有使用它,你可能应该这样,它增加了很多糖,即使在ES6 +规范中也是如此)

https://lodash.com/docs#escapeRegExp

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