在MongoDB查询中将javascript变量用作$regex的值
我试图将参数传递到mongo查询中——如果我键入文本,它可以正常工作,但是,当我尝试用变量(参数)替换文本时,它失败了 想象一个包含“事物”的数据集 我有办法找到“书”“书”“书”或“毯子” 如果我用字面意义上的“书”来做这件事,它会起作用在MongoDB查询中将javascript变量用作$regex的值,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我试图将参数传递到mongo查询中——如果我键入文本,它可以正常工作,但是,当我尝试用变量(参数)替换文本时,它失败了 想象一个包含“事物”的数据集 我有办法找到“书”“书”“书”或“毯子” 如果我用字面意义上的“书”来做这件事,它会起作用 function( name, callback ) { Catalog .find({ 'thing.name': {"$regex": /Book/, "$options": "i" }}) .exec(callb
function( name, callback ) {
Catalog
.find({ 'thing.name': {"$regex": /Book/, "$options": "i" }})
.exec(callback);
}
但是-我希望使用参数“name”
function( name, callback ) {
Catalog
.find({ 'thing.name': {"$regex": /name/, "$options": "i" } })
.exec(callback);
}
但这不起作用,它似乎在寻找文本“name”,而不是传入的值。如何对此进行转义?创建
RegExp
类的实例。它还允许您从查询中删除$options
属性,如下所示:
function( name, callback ) {
var regexName = new RegExp(name, "i");
Catalog
.find({ 'thing.name': { "$regex": regexName } })
.exec(callback);
}
可以这样做:-
函数(名称、回调){
目录
.find({“thing.name”:{$regex:name$options:“i”})
.exec(回调);
}
function( name, callback ) {
var regexName = new RegExp(name, "i");
Catalog
.find({ 'thing.name': { "$regex": regexName } })
.exec(callback);
}