簡體   English   中英

在MongoDB查詢中使用javascript變量作為$ regex的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM