我正在使用Node,Express,Mongoose和Mongodb为Web应用创建后端。我尝试使用名称字段和标签数组对某些用户配置文件进行部分搜索,以便" re"将返回包含标签数组或名称的配置文件,其中包含" red"和"蓝色"将返回包含标签数组或名称的配置文件,其中包含" blue"
我找到了添加正则表达式的语法。有点像:
Profile.find(.0
{ "tags": { "$regex": "re", "$options": "i" } },
function(err,docs) {
str = JSON.stringify(docs, null, 4);
console.log(str)
}
);
我也试图对它们进行评分并对结果进行排序。我找到了另一个堆栈溢出帖子:
Profile.find({ "$text": { "$search": input } })
.select({ "score": { "$meta": "textScore" } })
.sort({ "score": { "$meta": "textScore" } })
.exec(function(err,result) {
str = JSON.stringify(result, null, 4);
console.log(str)
}
);
但是在阅读完文档之后,我对如何将这两个概念结合起来仍然模糊不清。有小费吗?
答案 0 :(得分:0)
{tag:/ re / i}将返回红色,但正则表达式无法使用蓝色,因为它比蓝色更长。全文索引不会搜索部分单词。
我们刚刚使用昵称实现了全文搜索,这对于美国名字非常有用。所以有人打字'bob',然后我们带回Rob,Robert等。如果那是你想要做的,我可以分享信息。