1

我将 MongoDB 与 Sails 一起使用。

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

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

这是已知的吗?我能做些什么呢?

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

该文档上面的 find-command 返回:

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

上面的 find-command返回此文档:

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

1 回答 1

2

这是已知的吗?

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

我能做些什么呢?

您可以将您的更改Regular Expression为:

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

您的代码的问题是小数点.

根据文档

.

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

这就是为什么带有newline字符的字符串不被视为匹配的原因。

于 2015-02-15T19:12:51.867 回答