我有一个只包含1个文档的集合:
events: ['some event', 'another one', 'and another'];
如何对此进行搜索,如果搜索参数是" som",则返回的文档将是"某些事件"。
目前我有以下内容:
var collection = db.collection('suggestions');
collection.ensureIndex({events: "text"}, function(){});
collection.find({ $text: { $search: term } }).toArray(function(err, docs){
if(err){
console.log(err);
}else{
res.send(docs);
}
});
其中term是搜索词 - 但这总是返回一个空数组[]。
可以用mongoDB完成吗?
答案 0 :(得分:1)
我认为搜索单词的一部分需要使用regex
个查询,因为文字索引,无论多么有用,据我所知,可能只能用来查找整个单词。
您可以使用以下查询找到该单词的一部分:
var collection = db.collection('suggestions');
collection.ensureIndex({events: 1}, function(){});
var query = { events: new RegExp( term ) };
collection.find(query).toArray(function(err, docs){
if(err){
console.log(err);
}else{
res.send(docs);
}
});
在上面,还有一个在事件数组上创建的多键索引(作为考虑的选项)。
我希望它至少有点帮助。