【问题标题】:Checking if a field contains a string, works with string type field but not with number检查字段是否包含字符串,适用于字符串类型字段但不适用于数字
【发布时间】:2017-08-23 15:38:15
【问题描述】:

我在 MongoDB 中使用 Loopback 节点 js 框架。 在这里,我正在检查一个字段是否包含给定的字符串

    user.find({
       where: {
        or: [{
         mobile: {
           "regexp": '/' + data.search + '/i'
         },
         contacts:{
           "regexp": '/' + data.search + '/i'
         }}]

      }
   }, function(err, mobileResult) {
    if (err) {
            callback(err, null);
    } else {
    .......
    .......
    }
  });

这个适用于字符串类型字段contacts,但不适用于数字字段mobile

我尝试了这些post 的答案,但对我没有用。

【问题讨论】:

  • 不要使用'/''/i',通过$options传递不区分大小写的修饰符。
  • 我试过了,但我认为,它与环回不同,它显示 MongoError: unknown operator: $$regex.@WiktorStribiżew 请再次阅读帖子。
  • 我正在检查...您是否使用了$regex : new RegExp(data.search, "i")?顺便说一句,您在答案中提供了不同的链接。
  • 是的,我也试过了,那个链接有更多答案
  • Regular expressions 匹配字符串中的模式。如果您需要进行模式匹配,我建议您将 mobile 值存储为字符串而不是数字。

标签: node.js regex mongodb loopbackjs strongloop


【解决方案1】:

我认为你可以使用这个解决方案:

  1. 使用聚合查询数据:

MongoDB aggregation on Loopback

  1. 使用这种很棒的方式在 MongoDB 中搜索数字:(第二个答案)

MongoDB Regex Search on Integer Value

我也同意@Stennie 的评论:

正则表达式匹配字符串中的模式。如果你需要做 模式匹配我建议将您的移动值存储为字符串 而不是数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-13
    • 2019-08-26
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多