当存在反斜杠换行符时,使用regex的Mongo查询失败



我正在将MongoDB与Sails一起使用。

db.post.find( { body:  {"$regex" : /^.*twitter.*$/i }}).

该查询应该只查找在其正文字段中包含"twitter"的帖子。由于某些原因,如果字段中存在反斜杠(如换行符),它将找不到匹配项。

这是已知的吗?我该怎么办?

这里有两个例子来展示这个问题:

此文档由上面的find命令返回

{ 
    "_id" : ObjectId("54e0d7eac2280519ac14cfda"), 
    "title" : "Cool Post", 
    "body" : "Twitter Twitter twitter twittor"
}

此文档不是由上面的find命令返回的:

{ 
    "_id" : ObjectId("54e0d7eac2280519ac14cfdb"), 
    "title" : "Cool Post with Linebreaks", 
    "body" : "This is a cool post with Twitter mentioned into it n Foo bar"
}

这是已知的吗

没有。这不是MongoDb搜索引擎的问题。

我该怎么办

您可以将Regular Expression更改为:

var regex = new RegExp("twitter","i");
db.posts.find( { body:  regex});

代码的问题是小数点.

根据文件,

.

(小数点)匹配除换行符以外的任何单个字符性格

这就是为什么具有CCD_ 5字符的字符串不被认为是匹配的。

最新更新