【发布时间】:2020-07-24 03:32:13
【问题描述】:
我正在尝试通过连接这些名字、中间名和姓氏字段来进行搜索
这是我的模型
var lectureSchema = new mongoose.Schema({
firstName:{
type:String,
require:"First Name can\'t be empty "
},
middleName:{
type:String,
require:"Middle Name can\'t be empty "
},
lastName:{
type:String,
require:"Last Name can\'t be empty ",
},
email:{
type:String,
require:"Email can\'t be empty "
}
};
lectureSchema.index({firstName:'text', middleName:'text',lastName:'text'});
mongoose.model('Lecture',lectureSchema);
这也是我的函数响应搜索 API
module.exports.findLecture=(req,res)=>{
var query = req.params.query;
Lecture.find({
$text: {
$search:query
}
}, function(err, result) {
if (err) throw err;
if (result) {
res.json(result)
} else {
res.send(JSON.stringify({
error : 'Error'
}))
}
})
}
这是路线
router.get('/findLecture/:query',checkerUser.findLecture);
但是,这似乎只获取与 firstName 字段匹配的文档。它与 middleName 和 lastName 字段不匹配。请有人帮助我。
【问题讨论】:
-
我认为developerslogblog.wordpress.com/2019/10/15/… 可能会有所帮助或者您可以尝试使用 $concat: ['$firstName', '$middleName', '$lastName']
-
只是想知道通过连接字符串搜索名称的目的是什么?如果您收到的名称是全名,您可以拆分为获取 firstName、lastName 和 midlleName,并可能在 where 子句中使用 and 条件直接搜索。