使用javascript正则表达式的Mongodb'$ where'查询

时间:2018-06-22 03:05:31

标签: mongodb mongodb-query

我正在尝试在mongodb的sql中重现REPLACE函数。

我的收藏集“ 日志”在“ 文本”字段中具有此数据。

[01]ABC0007[0d0a]BB BABLOXC[0d0a]067989 PLPXBNS[0d0a02]BBR OIC002 L5U0/P AMD KAP 041800 T1200AND 2+00[0d0a0b03]

我要做的就是使用正则表达式(javascript)删除'[..]'并像这样使用contains('PLPXBNSBBR'),以便表达式在mongo文档中根据javadocs返回true

下面的查询成功运行并返回匹配的行。

  

db.log.find({“ $ where”:“返回this.message.replace(new RegExp('0d0a02'),”)。contains('PLPXBNS [] BBR')“});

但是,我需要删除“ [..]”并进行匹配,例如PLPXBNSBBR。

这些是我尝试失败的

  

db.log.find({“ $ where”:“返回this.message.replace(新   RegExp('\ [。*?\]','g'),'').contains('PLPXBNSBBR')“});

     

db.log.find({“ $ where”:“返回this.message.replace(新   RegExp('/[(.*?)]','g'),'').contains('PLPXBNSBBR')“});

     

db.log.find({“ $ where”:“返回this.message.replace(新   RegExp('//[.*//]'),'').contains('PLPXBNSBBR')“});

     

db.log.find({“ $ where”:“返回this.message.replace(新   RegExp('[。*?]'),'').contains('PLPXBNSBBR')“});

从较早的discussion看来,如果我可以将模式作为/ [[^]] +] / g传递,它应该剥离[..],但它没有这样做并且不返回匹配的行。

1 个答案:

答案 0 :(得分:0)

好的,我能够成功使用链接替换来获得想要的结果。