使用Regex的Mongo DB查找查询未返回预期输出

时间:2019-06-06 14:16:09

标签: java database mongodb

下面是我的查询,它从数据库返回结果。我正在使用3.2.22 mongo版本

db.courses.find({_id:"edX-NYIF+CR.5x"});

现在,我想获取课程ID的记录,该记录将以小写形式显示,因此我在下面的查询中使用了字母字符,但未获得后续课程ID的结果,似乎工作正常。

db.getCollection('courses').find({"_Id": { $regex : "edX-NYIF+CR.5x$" , $options: 'i'}})

2 个答案:

答案 0 :(得分:2)

正则表达式表达式字符串需要转义

db.getCollection('courses').find({"courseId": { $regex : "edX\\-NYIF\\+CR\\.5x$" , $options: 'i'}})

MongoPlayground

答案 1 :(得分:0)

乍一看,您的查询看起来不错...但是由于您的ID格式,我认为这无法按预期工作。

字符串"edX-NYIF+CR.5x"包含对正则表达式具有特定含义的字符,例如.+,也许其他一些ID包含其他ID。你应该先逃避这些。

Looking at another SO question,有一种转义对正则表达式敏感的字符的简单方法:

string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')

因此请转义您的ID字符串,然后在查询中使用它。

Here's a handy reference for special characters inside regular expressions, should you need it.