rel*_*der 2 mongoose mongodb node.js
这是我的模型,
var InternetSchema = new Schema({
name: String,
company: String,
contactNumber:String,
accessToken:String,
});
InternetSchema.index({name: 'text', company: 'text');
export default mongoose.model('Internet', InternetSchema);
Run Code Online (Sandbox Code Playgroud)
这是我响应搜索 API 的函数
export function getSearchAccess(req, res) {
// const arr = [
// {name: req.params.term},
// {company: req.params.term}
// ]
console.log(req.params.term)
Internet.find({
$text: {
$search: req.params.term
}
}).limit(10).exec(function(finderr, finddata) {
return res.json({ count: 10, data: finddata });
});
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎只能获取与该name字段匹配的文档。它不匹配company。
我尝试在 mongo shell 中测试它,它不会获取公司的任何数据,但会获取名称的数据
小智 5
尝试使用“$or”运算符:
//examples from my app
//User.js
..
userSchema.index({login: 'text', fullname: 'text', email: 'text'}, {default_language: 'none'});
//query examples:
User.find({"$or": [ { "fullname" : { $search: criteria }}, { "email" : { $search: criteria }}, { "login" : { $search: criteria }}]});
//or regexp
User.find({"$or": [ { "fullname" : { $regex: criteria }}, { "email" : { $regex: criteria }}, { "login" : { $regex: criteria }}]});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6959 次 |
| 最近记录: |