Mongo文本查询匹配时不应该

时间:2016-02-09 16:20:17

标签: mongodb meteor

我有一个使用mongodb的流星应用程序。我有一个名为tasks的集合,其中有一个名为summary的字段。我在摘要中添加了一个文本索引。

当我运行此查询时:

    return Tasks.find(
        { userId: this.userId, $text: { $search: "#"+term } },
        { sort: { createdAt: -1 } }
    );

我获得的任务同时包含#mytermmyterm

我想得到什么,以及我应该得到的只是与#myterm匹配的文件。它忽略了标签字符。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

将其包含在转义引号中,如下所示:

return Tasks.find(
        { userId: this.userId, $text: { $search: "\"#"+term+"\"" } },
        { sort: { createdAt: -1 } }
);

它似乎是特殊字符的shell约定。

答案 1 :(得分:0)

你可以试试这个。希望它能起作用

return Tasks.find(
    { userId: this.userId, "summary": { $regex: "\#term" } },
    { sort: { createdAt: -1 } }
);

如果你想在一个特定的字段中搜索,那么$ regex将是一个更好的选择。为此,不需要任何索引。