我有一些猫鼬模式:
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
答案 0 :(得分:0)
您可以使用正则表达式进行搜索。将您的查询更改为:
Article.find({searchField: /sub/i});
双/
允许您仅搜索单词的一部分。最后的i
忽略了大写和小写。
(请注意,这只会在特定字段中搜索searchField
)