[英]Use javascript variable as a value of $regex in MongoDB query
我正在嘗試將參數傳遞給mongo查詢-如果我輸入文字,它可以正常工作,但是,當我嘗試用變量(參數)替換文字時,它會失敗
想象一個帶有“事物”的數據集
{"thing": {"name":"book","label":"Bobs"}}
{"thing": {"name":"blanket","label":"Bobs"},
{"thing": {"name":"books","label":"Jills"},
{"thing": {"name":"blankets","label":"Jills"},
我有一種方法可以找到“書”,“書”,“書”,“書”或“毯子”
如果我使用字面意義上的“書”來執行此操作,則可以
function( name, callback ) {
Catalog
.find({ 'thing.name': {"$regex": /Book/, "$options": "i" }})
.exec(callback);
}
但是-我希望使用參數“名稱”。
function( name, callback ) {
Catalog
.find({ 'thing.name': {"$regex": /name/, "$options": "i" } })
.exec(callback);
}
但這是行不通的,它似乎是在尋找字面的“名稱”而不是傳入的值。 我該如何逃避?
創建RegExp
類的實例。 它還允許您從查詢中刪除$options
屬性,如下所示:
function( name, callback ) {
var regexName = new RegExp(name, "i");
Catalog
.find({ 'thing.name': { "$regex": regexName } })
.exec(callback);
}
可以這樣:
function( name, callback ) { Catalog .find({ "thing.name": { $regex: name, $options: "i" }}) .exec(callback); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.