【问题标题】:Mongodb dynamic like operatorMongodb动态like运算符
【发布时间】:2012-07-06 21:46:24
【问题描述】:

在mongodb中相当于sql的“like”操作符是

db.users.find({"shows": /m/})

使用 nodejs/javascript 我想根据 url 参数动态更改字母。

我试过了

letter = req.params.letter;

db.users.find({"shows": '/' + letter + '/'})

这不起作用,我猜是因为斜杠现在字符串的解释不同。

【问题讨论】:

    标签: javascript node.js mongodb


    【解决方案1】:

    你可以试试这个:

    let filter = "Dynamic";
    
    let str = /.*Raj.*/;
    console.log(str);
    console.log(typeof(str));
    
    
    let stra = eval(`/.*${filter}+.*/`);
    console.log(stra);
    console.log(typeof(stra));
    

    【讨论】:

    • 我们可以使用eval
    • 欢迎来到SO,请避免发布仅代码答案并提供一些解释。
    【解决方案2】:

    +1 for mindandmedia 的语法。但是,请记住,如果您希望查询有效使用索引,则必须使用前缀查询(也称为根正则表达式),例如 /^prefix/

    否则您的查询可能会非常缓慢 - 请参阅此处文档中的注释:

    http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions

    【讨论】:

      【解决方案3】:

      一种方法,根据documentation page:

      db.users.find( { shows : { $regex : letter } } );
      

      【讨论】:

      • 这工作正常,但我想从多个字段中搜索,请参阅下面的代码
      • var searchVar = req.body.search; Product.find({name : { $regex : searchVar },sku : { $regex : searchVar }},function(error,fetchSearchProduct){});我需要在 "test" 和 "Test" 两种情况下得到相同的结果。现在它适用于“测试”而不是“测试”
      猜你喜欢
      • 1970-01-01
      • 2014-10-29
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多