在Mongo中搜索文本

时间:2015-11-11 15:34:00

标签: node.js mongodb mongoose full-text-search

我有一些猫鼬模式:

const Article = new Schema({
    name:                            { type: String,     required: true },
    message:                         { type: String,     default: "" },
    searchField:                     { type: String,     default: ""  },
    ...
});

searchField是名称和消息字段的组合。

索引:

Article.index({searchField: 'text'});

然后当我需要在文章列表中搜索时:

query.$text = { $search: data.search }.

它有效但有一些问题。

第一个 - 当data.search.length< = 3时,它无法找到文章。例如,name =' bag'和data.search =' bag',它没有用(如果语言是英语的话,那就好)。

第二个 - 如果名字='字幕'和data.search =' sub',没有结果。

有什么问题?

MongoDB shell版本:3.0.6

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式进行搜索。将您的查询更改为:

Article.find({searchField: /sub/i});

/允许您仅搜索单词的一部分。最后的i忽略了大写和小写。

(请注意,这只会在特定字段中搜索searchField