我试图将参数传递给mongo查询 - 如果我输入文字,它可以正常工作,但是,当我尝试用变量(参数)替换文字时,它会失败
想象一下带有"事物"
的数据集{"thing": {"name":"book","label":"Bobs"}}
{"thing": {"name":"blanket","label":"Bobs"},
{"thing": {"name":"books","label":"Jills"},
{"thing": {"name":"blankets","label":"Jills"},
我有一种方法可以找到" Book" "书" "图书" "书籍"或者"毯子"
如果我使用字面意图' Book' - 它的工作原理
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);
}
但这不起作用,它似乎在寻找字面上的名字'不是传入的价值。怎么逃避这个?
答案 0 :(得分:1)
创建RegExp
类的实例。它还允许您从查询中删除$options
属性,如下所示:
function( name, callback ) {
var regexName = new RegExp(name, "i");
Catalog
.find({ 'thing.name': { "$regex": regexName } })
.exec(callback);
}
答案 1 :(得分:1)
可以这样做: -
function( name, callback ) {
Catalog
.find({ "thing.name": { $regex: name, $options: "i" }})
.exec(callback);
}