微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在mongoDB中使用正则表达式匹配获取数据

如何解决在mongoDB中使用正则表达式匹配获取数据

我想从我的收藏中获取所有记录,这些记录在移动列中可能带有加号(+)连字符(-)和数字

所以我允许查询中的以下记录类型

+91-1234567890
+911234567890
1234567890

如果移动列匹配以上三种格式中的任何一种,则这些记录应显示

通过使用以下查询,我得到的结果为空

db.collection.aggregate([{“ $ match”:{mobile:{$ regex:'^ [+]?(\ d-?){6,15} \ d $'}}}},{$ group:{_ id:null,count:{$ sum:1}}}]))

解决方法

您必须使用\\

来转义特殊字符“ +”和“-”
db.collection.aggregate([
  {
    "$match": {
      mobile: {
        $regex: "^(\\+[0-9]{1,5}\\-|\\+[0-9]{1,5})?([0-9]{10})$"
      }
    }
  },{
    $group: {
      _id: null,count: {
        $sum: 1
      }
    }
  }
])

See the working example in MongoDB playground

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。