我正在使用带有Sails的MongoDB。
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"
}
答案 0 :(得分:2)
这是否已知?
没有。这不是MongoDb
搜索引擎的问题。
我该怎么办?
您可以将Regular Expression
更改为:
var regex = new RegExp("twitter","i");
db.posts.find( { body: regex});
您的代码存在的问题是小数点.
根据doc,
.
(小数点)匹配除换行符之外的任何单个字符 字符。
这就是为什么带有newline
字符的字符串不会被视为匹配。