使用$regex进行文本匹配时遇到的

发布问题 回首页

使用$regex进行文本匹配时遇到的

★ 0 成为第一个关注这个问题的人


To use $regex, we can use one of the following 3 syntaxes:

{ : { $regex: /pattern/, $options: ” } }
{ : { $regex: ‘pattern’, $options: ” } }
{ : { $regex: /pattern/ } }

我们针对前两种语法进行了对比测试后得到了完全不同的效果

#测试用的集合
pradb>db.newtab.find()
{ “_id” : ObjectId(“5a2a2555c8ba4994e594397f”), “f1″ : “realapp” }
{ “_id” : ObjectId(“5a2a255dc8ba4994e5943980″), “f1″ : “racapp” }
{ “_id” : ObjectId(“5a2a2562c8ba4994e5943981″), “f1″ : “mysql” }
{ “_id” : ObjectId(“5a2a2d60c8ba4994e5943982″), “f1″ : “vcapp” }
{ “_id” : ObjectId(“5a2a340fc8ba4994e5943983″), “f1″ : “rea\napp” }
{ “_id” : ObjectId(“5a2e4156c3b9a66ec4988f15″), “f1″ : “suretrea” }

#使用单引号将字符串括起来,我们得到的查询结果是”realapp”
pradb>db.newtab.find({f1:{$regex:’rea \n# comment 1\nl’,$options:”x”}})
{ “_id” : ObjectId(“5a2a2555c8ba4994e594397f”), “f1″ : “realapp” }

#使用/将字符串括起来,我们得到的查询结果是”rea\napp”
pradb>db.newtab.find({f1:{$regex:/rea \n# comment 1\nl/,$options:”x”}})
{ “_id” : ObjectId(“5a2a340fc8ba4994e5943983″), “f1″ : “rea\napp” }

// and ”为何会导致不同的结果输出?

oliseh@163.com 在大约 之前添加了 Open 状态
  • 提问于
  • Answers0 个
  • 浏览 15 次
  • 最新活跃于

问题状态

  • Open

类别

1 个 参与者

使用$regex进行文本匹配时遇到的》有12个想法

  1. 谢答,但个人认为不准确,1.mr我觉得不适合实时计算,更贴合后期数据统计需求,2.aggregate必须支持自定义函数,就好像你定义个abc(1,2)一样肯定是计算了,现在的问题是abc(1,2)这个参数我想传个字段进去,比如abc($qty,2)这样….他就不好使了….难道大家没有在aggregate中用字段进行计算的经历么?

发表评论