我正在将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字符的字符串不被认为是匹配的。